Java 使JDialog变换颜色
我需要帮助使JDialog变换颜色。此外,我如何禁用JFrame的所有组件,只有一个按钮“STOP”停止执行此颜色变换按钮? 我必须使用线程或swingworker吗?如果你能在细节上帮助我,而不仅仅是在最低限度上,那将是非常有帮助的。提前谢谢你! 如果有人需要查看整个代码来帮助我,我可以发布它Java 使JDialog变换颜色,java,swing,Java,Swing,我需要帮助使JDialog变换颜色。此外,我如何禁用JFrame的所有组件,只有一个按钮“STOP”停止执行此颜色变换按钮? 我必须使用线程或swingworker吗?如果你能在细节上帮助我,而不仅仅是在最低限度上,那将是非常有帮助的。提前谢谢你! 如果有人需要查看整个代码来帮助我,我可以发布它 Timer t; if(choiceTrueFalse==true){ t = new Timer(Integer.valueOf(jTextFi
Timer t;
if(choiceTrueFalse==true){
t = new Timer(Integer.valueOf(jTextField2.getText())*1000/speed, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JDialog dialog = new JDialog();
dialog.setVisible(true);
dialog.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
int i=0;
while(true){
i++;
if(i%2==0){
dialog.setBackground(c);
}
else{
dialog.setBackground(Color.white);
}
}
}
});```
我需要帮助使JDialog变换颜色
阅读Swing教程中关于的部分,了解JFrame、JDialog等的结构
“内容窗格”(默认情况下只是一个JPanel)覆盖了对话框。因此,要更改背景,您需要更改内容窗格的背景
dialog.getContentPane().setBackground(...);
每个帖子一个问题。您发布的任何代码都应该是一个演示一个特定问题的示例,以保持代码简单易懂。因为你的题目是关于改变颜色的,所以我们可以集中讨论这个问题。禁用按钮是一个完全不同的主题。是的,你说得对,我忘记了.getContentPane()方法。但这仍然没有改变它。我不知道是因为我在使用Thread.sleep,还是因为其他原因。我正在粘贴下面修改过的代码。在你的问题中发表你的观点。我们对你的申请不感兴趣。仅显示所述问题的代码。注意,如果您使用的是模态对话框,那么setVisible()语句后面的代码在对话框关闭之前不会执行。因此,在对话框可见之前需要启动计时器。@camrick我已将setVisible()语句放在循环的末尾,但它仍然不起作用。使用repaint()是一个选项吗?此外,这可能会改变一个长期的问题,我必须作出另一个按钮,停止循环。因此,如果我首先编程“停止”按钮,它会比首先使用闪烁方法更容易解决吗?如果对话框不可见,那么更改背景将不会起任何作用。我已经给了你解决办法。我仍然看不到你的,所以我不能再帮你了。
while(true){dialog.getContentPane().setBackground(Color.white);try{Thread.sleep(500);}catch(InterruptedException ex){}dialog.getContentPane().setBackground(c);try{Thread.sleep(500);}catch(InterruptedException ex){}setVisible(true);}
这不会使JPanel(JDialog)闪烁。我应该将.setVisible(true)放在哪里?如果你愿意,我可以将整个方法粘贴到pastebin。我引入了两个线程(一个启动闪烁,另一个停止闪烁)。