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;我也推荐我也推荐