gpt4 book ai didi

java - 为什么我的 jframe 不出现?

转载 作者:行者123 更新时间:2023-11-29 05:18:02 24 4
gpt4 key购买 nike

我正在尝试显示一个简单的 jframe,我最终会在其中放入 Canvas 来渲染 3d 对象。去年我构建了两个使用 jframe 的 GUI 程序,我看过它们并且它们工作正常,但我无法弄清楚为什么当我运行该程序时没有任何反应。这是我的代码:

import javax.swing.*;
import java.awt.*;

public class Hello3d extends JFrame
{
JFrame frame;
JLabel label;

public Hello3d()
{
frame = new JFrame("This is a jframe, YAAAYYYY!!!!");
frame.setSize( 600, 400 );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

frame.setLayout( new BorderLayout() );
label = new JLabel("This is where i put somthing 3d");
frame.add( label );
frame.setVisible(true);
}

public static void main(String[] args)
{
new Hello3d();
}
}

最佳答案

在这里,看看这是否有效。请注意主要方法,因为,Swing GUI或任何 GUI就此而言,必须在它自己的线程中运行,而不是 main .此外,与其手动设置尺寸,不如考虑调用 frame.pack() , 这将创建一个 JFrame在计算出这个容器中包含的组件的大小之后,从某种意义上说。

尝试使用JFrame.DISPOSE_ON_CLOSE结束,JFrame.EXIT_ON_CLOSE , 因为后者与使用 System.exit(0) 非常相似,它只是杀死应用程序,虽然是前者,但会优雅地等待所有守护线程停止,然后 JVM 才真正关闭。

import java.awt.*;
import javax.swing.*;

public class HelloFrame {
private void displayGUI() {
JFrame frame = new JFrame("Hello Frame Example");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

JPanel contentPane = new JPanel();
JLabel label = new JLabel(
"This is where I put something 3D", JLabel.CENTER);
contentPane.add(label);

frame.setContentPane(contentPane);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}

public static void main(String[] args) {
Runnable runnable = new Runnable() {
@Override
public void run() {
new HelloFrame().displayGUI();
}
};
EventQueue.invokeLater(runnable);
}
}

关于java - 为什么我的 jframe 不出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25835553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com