java - 为什么我的 JFrame 只是一个黑色的窗口?

标签 java swing jframe jpanel jcomponent

我的代码是这样的,当我运行它时,我只是得到一个黑色的窗口,我不知道为什么。

感谢您的任何反馈。 它应该打印出一张图片,并最终使其移动。

package assignment04;

import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class GoLDriver
{
    public static void main(String[] args)
    {
        GoLModel model= new GoLModel();
        JFrame frame = new JFrame();
        JPanel panel= new JPanel();
        panel.setLayout(new BorderLayout());
        panel.setPreferredSize(new Dimension(400, 300));
        model.initialize();
        frame.add(panel);
        frame.pack();
        frame.setTitle("Game of Life");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        GoLComponent component = new GoLComponent(model,15,20,20);
        panel.add(component);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);

        for(int i=0; i <40; i++)
        {
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            model.count();
            model.update();
            panel.repaint();
        }
    }
}

最佳答案

最可能的原因是您阻止了事件调度线程,阻止其绘制...

for(int i=0; i <40; i++)
{
    try {
        Thread.sleep(100);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    model.count();
    model.update();
    panel.repaint();
}

看看Concurrency in SwingHow to use SwingTimer然后搜索 animation in swing在 Google 上获取更多建议...

关于java - 为什么我的 JFrame 只是一个黑色的窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22057731/

相关文章:

java - 如何使用字符串值来调用类属性

java - 将 JComboBox 连接到 JTextField

java - 缩放 JFrame 内容

c# - 非静态字段、方法或属性需要对象引用

定义了数据报源的 Java MulticastSocket

java - JFrame方法问题

java - 将 KeyListener 和 JFrame 分成 2 个不同的类

java - ContentPane 和 JPanel 有什么关系?

java - 在 JFrame 中保存复选框

java - MANIFEST.MF 属性返回 null