Java 如何在x秒内更改JLabel文本
我想在短时间内更改Java 如何在x秒内更改JLabel文本,java,swing,timer,jlabel,Java,Swing,Timer,Jlabel,我想在短时间内更改JLabel文本(有一个计数器,如果有人在文本字段中键入错误答案,我想显示“错误答案”,而不是计数器。几秒钟后,我想再次显示计数器。) 这是一个简单的方法,你可以这样做。显然,您应该用实际代码替换注释。使用paint()void外部的变量,告诉您的paint()方法在屏幕上绘制或不绘制计数器。比如说, boolean wrongAnswer = true; public void paint(Graphics g){ if(b){ g.drawStrin
JLabel
文本(有一个计数器,如果有人在文本字段中键入错误答案,我想显示“错误答案”,而不是计数器。几秒钟后,我想再次显示计数器。)
这是一个简单的方法,你可以这样做。显然,您应该用实际代码替换注释。使用
paint()
void外部的变量,告诉您的paint()
方法在屏幕上绘制或不绘制计数器。比如说,
boolean wrongAnswer = true;
public void paint(Graphics g){
if(b){
g.drawString("Wrong Answer.", x, y);
//It's best to use a timer, see the link provided
}
else{
g.drawString(counter+"", x, y)
}
}
对于某些代码,在本例中,您希望使用计时器对象。以下是适用于您的情况的演示:
public static void main(String[] args) {
SwingUtilities.invokeLater(()->{
JFrame frame = new JFrame();
frame.setLayout(new FlowLayout());
JLabel label = new JLabel("One");
JButton button = new JButton("Ok");
button.addActionListener(e -> {
String oldText = label.getText();
label.setText("Changed");
Timer timer = new Timer(2000, event -> {
label.setText(oldText);
});
timer.setRepeats(false);
timer.start();
});
frame.add(label);
frame.add(button);
frame.pack();
frame.setVisible(true);
});
}
按钮的侦听器更改标签的文本并启动一个摆动计时器(此处的保险丝为2秒)。计时器超时后,它会向其(计时器的)注册的侦听器发送一个动作事件,在本例中,该侦听器会将文本还原为原始文本。显然,他应该为此在代码中添加一个if。我的代码只是他计时器问题的解决方案。我根本不知道如何解决那个问题。我尝试了定时器,但是它改变了文本,但是没有重置回正常文本
public static void main(String[] args) {
SwingUtilities.invokeLater(()->{
JFrame frame = new JFrame();
frame.setLayout(new FlowLayout());
JLabel label = new JLabel("One");
JButton button = new JButton("Ok");
button.addActionListener(e -> {
String oldText = label.getText();
label.setText("Changed");
Timer timer = new Timer(2000, event -> {
label.setText(oldText);
});
timer.setRepeats(false);
timer.start();
});
frame.add(label);
frame.add(button);
frame.pack();
frame.setVisible(true);
});
}