Tôi có mã làm việc này cho đồng hồ bấm giờ trong Swing. Tôi muốn có nhãn Time Remaining 300 seconds
tập trung vào dòng thứ hai`. đây là mã của tôi. làm thế nào để trung tâm JLabel trong Jframe Swing?
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;
public class TimerGUI extends JPanel {
JLabel promptLabel, timerLabel;
final int count = 30;
JButton start;
JButton end;
Timer timer;
public TimerGUI() {
setLayout(new GridLayout(0,2));
start = new JButton("Start");
add(start);
Event e = new Event();
start.addActionListener(e);
end = new JButton("End");
end.setEnabled(false);
add(end);
end.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
timer.stop();
start.setEnabled(true);
end.setEnabled(false);
timerLabel.setText("Time Remaining " + count + " seconds");
}
});
timerLabel = new JLabel("Time Remaining 300 seconds");
add(timerLabel);
}
private class Event implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
start.setEnabled(false);
end.setEnabled(true);
timerLabel.setText("Time Remaining " + count + " seconds");
TimeClass tc = new TimeClass(count);
timer = new Timer(1000, tc);
timer.start();
}
}
private class TimeClass implements ActionListener {
int counter;
public TimeClass(int count) {
this.counter = count;
}
@Override
public void actionPerformed(ActionEvent e) {
counter--;
if (counter <= 5) {
Toolkit.getDefaultToolkit().beep();
}
if (counter >= 1) {
timerLabel.setText("Time Remaining " + counter + " seconds");
} else {
timer.stop();
timerLabel.setText("game over");
}
}
}
public static void main(String[] args) {
JFrame myframe = new JFrame();
TimerGUI timer = new TimerGUI();
// myframe.getContentPane().add(content,BorderLayout.CENTER);
myframe.getContentPane().add(timer, BorderLayout.CENTER);
myframe.setTitle("Hangman Game");
myframe.pack();
myframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myframe.setLocationRelativeTo(null);
myframe.setVisible(true);
}
}
EDIT: thay đổi thành điều này.
timerLabel = new JLabel("Time Remaining 300 seconds");
add(timerLabel,SwingConstants.CENTER);
cho ouput khác nhau, vui lòng xem hình ảnh
@ user1988876: sau đó sử dụng kết hợp các trình quản lý bố cục tốt hơn. GridLayout của bạn sẽ ngăn chặn việc định tâm. Thay vào đó, JPanel của bạn sử dụng BorderLayout. Xem xét làm tổ JPanels. –
Tôi bắt đầu với 'BorderLayout', nhưng điều đó có vẻ giống như một spoiler tổng số –
@ user1988876:' "total spoiler" '??? Điều đó cho tôi ít manh mối về những gì sai với nó. Một lần nữa, bạn có thể không làm tổ của bạn JPanels và do đó làm tổ bố trí. –