Java 使JDialog变换颜色

Java 使JDialog变换颜色,java,swing,Java,Swing,我需要帮助使JDialog变换颜色。此外,我如何禁用JFrame的所有组件,只有一个按钮“STOP”停止执行此颜色变换按钮? 我必须使用线程或swingworker吗?如果你能在细节上帮助我,而不仅仅是在最低限度上,那将是非常有帮助的。提前谢谢你! 如果有人需要查看整个代码来帮助我,我可以发布它 Timer t; if(choiceTrueFalse==true){ t = new Timer(Integer.valueOf(jTextFi

我需要帮助使JDialog变换颜色。此外,我如何禁用JFrame的所有组件,只有一个按钮“STOP”停止执行此颜色变换按钮? 我必须使用线程或swingworker吗?如果你能在细节上帮助我,而不仅仅是在最低限度上,那将是非常有帮助的。提前谢谢你! 如果有人需要查看整个代码来帮助我,我可以发布它

        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。我引入了两个线程(一个启动闪烁,另一个停止闪烁)。