我想创建一个JButton,它会在第一次单击后定期更改其文本。我对Swing库并不熟悉。什么是一个好的起点?我可以在没有动作的情况下更新其文本吗?
谢谢。
答案 0 :(得分:3)
对于Swing中的所有期刊事件,我只建议javax.swing.Timer
使用Timer输出的应该是,例如
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.Timer;
public class CrazyButtonTimer {
private JFrame frame = new JFrame(" Crazy Button Timer");
private JButton b = new JButton("Crazy Colored Button");
private Random random;
public CrazyButtonTimer() {
b.setPreferredSize(new Dimension(250, 35));
frame.getContentPane().add(b);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
javax.swing.Timer timer = new Timer(500, new TimerListener());
timer.setInitialDelay(250);
timer.start();
}
private class TimerListener implements ActionListener {
private TimerListener() {
}
@Override
public void actionPerformed(final ActionEvent e) {
Color c = b.getForeground();
if (c == Color.red) {
b.setForeground(Color.blue);
} else {
b.setForeground(Color.red);
}
}
}
public static void main(final String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
CrazyButtonTimer crazyButtonTimer = new CrazyButtonTimer();
}
});
}
}
答案 1 :(得分:1)
如果要在每个固定的时间内更改它,那么您可以使用Swing Timer或Thread来执行此操作。但为此你必须至少听一个动作才能初始化并启动它。
您也可以使用java.util中的TimerTask类,如下所示:
java.util.TimerTask timerTask = new java.util.TimerTask() {
@Override
public void run() {
//change button text here using button.setText("newText"); method
}
};
java.util.Timer myTimer = new java.util.Timer();
myTimer.schedule(timerTask, 3 * 1000, 3* 1000); // This will start timer task after 3 seconds and repeat it on every 3 seconds.
答案 2 :(得分:1)
我建议您创建一个计时器(here,你可以找到一些文档)
Timer timer = new Timer(100,this);
您的类必须扩展动作侦听器ed实现以下方法,允许您更改JButton
的文本(我称之为“`”按钮。
public void actionPerformed(ActionEvent e) {
if(e.getSource.equals(timer)){
button.setText("newText");
}
}
卢卡
答案 3 :(得分:1)
所有其他答案都未提及如何非定期更新。如果需要不定期更新,可以在GUI类中创建一个名为:updateButton();每当你想要它改变你的文字时,只需要打电话。
public void updateButton(String newText)
{
Button.setText(newText);
}
我想加上这个,万一有人想不定期地设置它。
答案 4 :(得分:0)
如果你想定期更改它(例如每隔5秒)你可以创建一个新的线程,它将按钮的文本设置为所需的值并重新绘制它(如果需要的话)。