我试图闪烁JButton的背景颜色,但只是睡觉了#39;它在工作。
我的代码:
@Override
public void actionPerformed(ActionEvent e){
if(!empty){
}else{
myButton.setBackground(Color.RED);
try {TimeUnit.MILLISECONDS.sleep(200);} catch (InterruptedException e2){}
myButton.setBackground(Color.LIGHT_GRAY);
try {TimeUnit.MILLISECONDS.sleep(200);} catch (InterruptedException e1) {}
myButton.setBackground(Color.RED);
try {TimeUnit.MILLISECONDS.sleep(200);} catch (InterruptedException e1) {}
myButton.setBackground(Color.LIGHT_GRAY);
}
}
}
编辑: 无法发布整个代码,这么多行。 该按钮位于GridBagLayout中:
myButton= new Jbutton("Button!");
myButton.setBackground(Color.White);
myButton.setHorizontalAlignment(JTextField.CENTER);;
myButton.setForeground(Color.black);
GridBagConstraints gbc_myButton = new GridBagConstraints();
gbc_myButton.fill = GridBagConstraints.BOTH;
gbc_myButton.gridx = 0;
gbc_myButton.gridy = 1;
gbc_myButton.gridwidth=3;
panel.add(myButton, gbc_myButton);
编辑2: 我只是弄清楚它没有在运行时设置任何颜色(有或没有任何延迟/睡眠)。
答案 0 :(得分:2)
您需要使用blackberry.app
来制作这样的动画。
javax.swing.Timer
注意:并非所有组件/ JCompone实际上都通过调用setBackground
来更改后台答案 1 :(得分:0)
问题是当你睡眠UI线程(通过while True:
main()
if input("Repeat the program? (Y/N)").strip().upper() != 'Y':
break
)时,它将无法重新呈现更改。我打赌最后的颜色会被渲染出来。
您需要找到一种触发颜色变化的替代方法,查看定时器,尤其是摆动定时器。