我想知道为什么当我在没有调整窗口大小的情况下输入此代码时,我看不到任何内容:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GolfScoresGUI
{
public static void main(String[] args)
{
JFrame frame = new JFrame("GolfScoresGUI");
JLabel label = new JLabel("Did you score it? ");
JTextField textField = new JTextField(10);
frame.setVisible(true);
frame.getContentPane().add(textField);
}
}
答案 0 :(得分:1)
将您的组件添加到您调用setPreferredSize
的面板,将面板添加到框架并调用JFrame.pack()。
JFrame.pack()根据其包含的元素的大小更新框架的大小以采用最小可能的大小。
如果你不打电话,它的大小就像是0x0,解释了为什么你什么也看不见。
JFrame frame = new JFrame("GolfScoresGUI");
JPanel panel=new JPanel();
panel.setPreferredSize(new Dimension(600,400)); // Not mandatory. Without this, the frame will take the size of the JLabel + JTextField
frame.add(panel);
JLabel label = new JLabel("Did you score it? ");
JTextField textField = new JTextField(10);
panel.add(label);
panel.add(textField);
frame.setVisible(true);
frame.pack();
修改
顺便说一下,您还应该添加此行,以便在关闭框架时停止应用程序:
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
答案 1 :(得分:0)
一切都很好但你没有为那个JFrame指定任何大小。那就是问题所在。尝试提供frame.setSize(width,height)
或frame.pack()
。通过使用其中一个,您的问题将得到解决。
http://docs.oracle.com/javase/tutorial/uiswing/components/frame.html
详细了解如何使用JFrame。
使用setVisible(true)
时要小心。尝试将setVisible(true)
放在GUI代码的末尾,即:在将所有GUI组件添加到容器后使用它,因为有时当您添加更多组件时,在调整框架大小之前它将不显示某些组件