1

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

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

2 回答 2

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);
于 2013-05-27T08:11:40.017 回答
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 组件添加到容器后使用它,因为有时当您添加更多组件时,在调整框架大小之前它不会显示某些组件。

于 2013-05-27T07:56:56.363 回答