java - 如何重新加载 JFrame - Java

标签 java swing jframe

我正在用java编程,我想刷新我的Jframe并通过循环更改颜色,但我无法重新加载框架,但我只能创建一个新框架。

package frames;
import java.awt.Color;

import javax.swing.*;

public class Frame1 {
public static void main(String[] args) 
{
    int num = 0;



    while (num<255)
    {
        num +=1;
        JFrame frame = new JFrame();
        frame.setSize(400,300);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setBackground(new Color(num,num,num));
        frame.setTitle("");

    }
}
}

最佳答案

  1. 您只需使用一帧(您将创建 255 个)
  2. 不要使用 while 循环来尝试更改背景。请改用 Swing 计时器。请参阅How to Use Swing Timers
  3. 在事件调度线程上运行所有 Swing 应用程序。请参阅Initial Threads

这是用这三点重构的代码

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.Timer;

public class Frame1 {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                final JFrame frame = new JFrame();
                frame.getContentPane().setBackground(
                        new Color(0, 0, 0));
                Timer timer = new Timer(10, new ActionListener() {
                    int num = 0;
                    public void actionPerformed(ActionEvent e) {
                        if (num > 255) {
                            ((Timer) e.getSource()).stop();
                        } else {
                            frame.getContentPane().setBackground(
                                    new Color(num, num, num));
                            num++;
                        }
                    }
                });
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setSize(300, 300);
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
                timer.start();
            }
        });
    }
}

关于java - 如何重新加载 JFrame - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25620975/

相关文章:

java - 创建一个独立的jar文件

java - MigLayout JLabel 超出限制

java - 如何根据第一次出现拆分字符串?

java - 有没有什么工具可以轻松制作复杂的GUI,并且支持java来编码逻辑

java - 在单个程序中制作多个帧

java - 动态创建 JPanel

java - 如何让 JFrame 高于所有其他应用程序(已经打开或将要打开),例如 Powerpoint

java - Android - 在 Activity 关闭时设置 Activity 结果

java - 如何通过Java中给出的例子来掌握二分查找递归的概念?

java - 在 Swing 中不同类的 JPanel 上绘画