3

好的,显然我最近因为使用 NetBeans GUI Builder 而变得懒惰。当我将 JLabel 和 JTextField 添加到我的窗口时,JFrame 不会自行调整大小。我写了一个SSCCE来演示:

package swingdemo;

import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class SwingDemo {

    public static void main(String[] args) {
        JFrame frame = new JFrame("Swing Demo");
        Container contentPane = frame.getContentPane();
        JLabel label = new JLabel("Demo Label");
        JTextField textField = new JTextField();

        contentPane.setLayout(new FlowLayout());
        contentPane.add(label);
        contentPane.add(textField);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

我在这里想念什么?我知道这很简单。我需要在我的 JLabel 和 JTextField 上调用 setPreferredSize() 吗?

4

1 回答 1

4

frame.pack()在代码末尾调用

javadoc 说:

“导致此窗口的大小调整为适合其子组件的首选大小和布局......”

于 2012-08-22T00:03:38.980 回答