【发布时间】:2019-05-27 18:00:49
【问题描述】:
此代码以开始按钮开头,但如果选择了单选按钮倒计时,则使用此代码,当倒计时为 0 时,第二个 Frame 出现并且应该按照用户输入的速度改变颜色,称为“brzinaTreperenja2”(对象转换为 int 然后乘以 1000 毫秒),我的颜色为红色。当我没有第二个 actionListener 并且闪烁以 1 秒的速度工作时,确实会发生闪烁,但是当我这样做时,程序会冻结。你能帮我解决这个问题吗?
start.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
if(countdown.isSelected()){
final Timer p = new Timer();
display.setFont(new Font("Ariel", Font.BOLD,25));
display.setBounds(150,75,120,20);
p.scheduleAtFixedRate(new TimerTask(){
int i = Integer.parseInt(odbrojavanje.getText());
@Override
public void run(){
display.setText(""+(i--));
if(i<0){
p.cancel();
drugi.setVisible(true);
Thread t = new Thread();
while(true){
ActionListener al3 = new ActionListener(){
public void actionPerformed(ActionEvent h){
drugi.getContentPane().setBackground(boja.getBackground());
try {
t.sleep(brzinaTreperenja2);
} catch (InterruptedException ex) {
Logger.getLogger(PrviProzor.class.getName()).log(Level.SEVERE, null, ex);
}
drugi.getContentPane().setBackground(Color.red);
try {
t.sleep(brzinaTreperenja2);
} catch (InterruptedException ex) {
Logger.getLogger(PrviProzor.class.getName()).log(Level.SEVERE, null, ex);
}
}
};
javax.swing.Timer p = new javax.swing.Timer(1000, al3);
p.start();
}
}
}
},0,1000);
}
}
});`
【问题讨论】:
-
请在您的问题中添加代码,不要发布链接。
-
我编辑了问题
标签: java swing actionlistener