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