Java 如果我没有';你不能调整它的大小吗?

Java 如果我没有';你不能调整它的大小吗?,java,swing,jframe,jlabel,jtextfield,Java,Swing,Jframe,Jlabel,Jtextfield,我想知道为什么我在没有调整窗口大小的情况下输入此代码时,什么都看不到: 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 l

我想知道为什么我在没有调整窗口大小的情况下输入此代码时,什么都看不到:

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);
    }
}

一切都很好,但您没有为该JFrame指定任何大小。这就是问题所在。尝试给出
frame.setSize(宽度、高度)
,或
frame.pack()
。通过使用其中一个,您的问题将得到解决

看一看这篇文章,详细了解如何使用JFrame


使用
setVisible(true)
时要小心。尝试将
setVisible(true)
放在GUI代码的末尾,即:在将所有GUI组件添加到容器后使用它,因为有时添加更多组件时,在调整框架大小之前,它不会显示某些组件。

一切正常,但您没有为该框架指定任何大小。这就是问题所在。尝试给出
frame.setSize(宽度、高度)
,或
frame.pack()
。通过使用其中一个,您的问题将得到解决

看一看这篇文章,详细了解如何使用JFrame


使用
setVisible(true)
时要小心。尝试将
setVisible(true)
放在GUI代码的末尾,即:在将所有GUI组件添加到容器后使用它,因为有时添加更多组件时,在调整框架大小之前,它不会显示某些组件。

将组件添加到调用
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);

将组件添加到调用
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);