Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的JFrame只是一扇黑色的窗户?_Java_Swing_Jframe_Jpanel_Jcomponent - Fatal编程技术网

Java 为什么我的JFrame只是一扇黑色的窗户?

Java 为什么我的JFrame只是一扇黑色的窗户?,java,swing,jframe,jpanel,jcomponent,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

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

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

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();
        }
    }
}
包分配04;
导入java.awt.BorderLayout;
导入java.awt.Dimension;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
公共级金河
{
公共静态void main(字符串[]args)
{
GoLModel model=新的GoLModel();
JFrame=新JFrame();
JPanel面板=新的JPanel();
panel.setLayout(新的BorderLayout());
面板。设置首选尺寸(新尺寸(400300));
model.initialize();
框架。添加(面板);
frame.pack();
frame.setTitle(“生活游戏”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GoLComponent=新的GoLComponent(型号15,20,20);
面板。添加(组件);
frame.setLocationRelativeTo(空);
frame.setVisible(true);

对于(int i=0;i这最有可能的原因是您阻止事件调度线程,阻止它绘制

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

对于(int i=0;i这最有可能的原因是您阻止了事件调度线程,阻止它绘制

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

for(inti=0;i我强烈建议不要在使用Java的swing框架时使用静态main方法进行编码

更好的布局(但不会解决您的问题)是:

public class GoLDriver
{    
    private GoLModel model;
    private JFrame frame;
    private JPanel panel;
    private GoLComponent component;

    public GoLDriver() {
        model= new GoLModel();
        frame = new JFrame();
        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);
        component = new GoLComponent(model,15,20,20);
        panel.add(component);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

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

    public static void main(String[] args)
    {
        GoLDriver gld = new GoLDriver();

        gld.startDriver();
    }
}
公共级GoLDriver
{    
私有模型;
私有JFrame;
私人JPanel小组;
私有组件;
公共金河{
模型=新模型();
frame=新的JFrame();
panel=新的JPanel();
panel.setLayout(新的BorderLayout());
面板。设置首选尺寸(新尺寸(400300));
model.initialize();
框架。添加(面板);
frame.pack();
frame.setTitle(“生活游戏”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
组件=新组件(型号15,20,20);
面板。添加(组件);
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
公共空间startDriver(){

对于(inti=0;i我强烈建议不要在使用Java的swing框架时使用静态main方法进行编码

更好的布局(但不会解决您的问题)是:

public class GoLDriver
{    
    private GoLModel model;
    private JFrame frame;
    private JPanel panel;
    private GoLComponent component;

    public GoLDriver() {
        model= new GoLModel();
        frame = new JFrame();
        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);
        component = new GoLComponent(model,15,20,20);
        panel.add(component);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

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

    public static void main(String[] args)
    {
        GoLDriver gld = new GoLDriver();

        gld.startDriver();
    }
}
公共级GoLDriver
{    
私有模型;
私有JFrame;
私人JPanel小组;
私有组件;
公共金河{
模型=新模型();
frame=新的JFrame();
panel=新的JPanel();
panel.setLayout(新的BorderLayout());
面板。设置首选尺寸(新尺寸(400300));
model.initialize();
框架。添加(面板);
frame.pack();
frame.setTitle(“生活游戏”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
组件=新组件(型号15,20,20);
面板。添加(组件);
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
公共空间startDriver(){
对于(int i=0;我也推荐我也推荐