Java JFrame没有出现在ubuntu中
当我在ubuntu中运行此代码时,窗口被最小化。当我点击它的图标时,它保持最小化。 但它在Windows中运行良好 这是我的密码Java JFrame没有出现在ubuntu中,java,swing,ubuntu,Java,Swing,Ubuntu,当我在ubuntu中运行此代码时,窗口被最小化。当我点击它的图标时,它保持最小化。 但它在Windows中运行良好 这是我的密码 import javax.swing.*; public class FrameTest { public static void main(String args[]) { JPanel p = new JPanel(); JButton b = new JButton("Button 1"); p.
import javax.swing.*;
public class FrameTest
{
public static void main(String args[])
{
JPanel p = new JPanel();
JButton b = new JButton("Button 1");
p.add(b);
JFrame f = new JFrame("TestFrame");
f.add(p);
f.setVisible(true);
f.setSize(500,500);
}
}
请帮助。放入f.setSize(500500)
betweenJFrame f=newjframe(“TestFrame”)代码>和f.add(p)代码>。不能调用f.setVisible(true)代码>在JFrame完全构建和初始化之前。我还建议在JPanel/JFrame中使用LayoutManager,例如BorderLayout
import java.awt.BorderLayout;
import javax.swing.*;
public class FrameTest
{
public static void main(String args[])
{
JPanel p = new JPanel();
BorderLayout bl = new BorderLayout(0, 0);
p.setLayout(bl);
JButton b = new JButton("Button 1");
p.add(b, BorderLayout.CENTER);
JFrame f = new JFrame("TestFrame");
f.setSize(500,500);
f.getContentPane().add(p);
f.setVisible(true);
}
}
f、 pack()?您需要调用f.pack()
或f.setSize(…)
在f.setVisible(true)
之前<代码>设置可见()
应该是使GUI可见时的最后一行。。。这是我第一次看到的,但无法测试,因为我没有在这里安装Ubuntu Swing/AWT GUI应该在事件调度线程上启动。这可能不是问题所在,但无论如何都要使用最佳实践。此外,正如@mko所提到的,我们应该在添加所有组件之后,但在setVisible(true)
之前,使用pack()
来调整GUI的大小。移除f.setSize(500500)代码>-这只是猜测。你的代码没有什么特别的错误(但我同意Andrew的观点,你应该在EDT上启动UI),我不能复制你的问题“你不能调用f.setVisible(true);在JFrame完全构建之前”——你可以,但你需要重新验证并重新绘制组件。“我还建议在JPanel/JFrame(如BorderLayout)中使用LayoutManager。”-所有基于窗口的类默认为BorderLayout
;我们不必使用getContentPane().add
,因为Java 1.6,JFrame\add
将调用转发到contentPane
;在窗口可见后更改窗口的大小对结果应该没有影响,但可能会使框架在第一次加载时看起来像是“弹出的”