1

我仍然没有创建 Java GUI 的经验,而且我在使用 JTextArea 时遇到了麻烦。我想修复它的高度(列数),但它似乎总是填满可用空间。我在互联网上读到你应该把它放在一个 JScrollPane 中,我已经这样做了,但同样的事情也会发生。

这是一些示例代码:

public class TestWindow extends JFrame {

    public TestWindow() {
        super();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(300, 200);
        setLocationRelativeTo(null);

        add(new JScrollPane(new JTextArea(5, 10)));

        setVisible(true);
    }

}

使用此代码,JTextArea 将填充整个窗口。有什么办法可以将其修复为特定数量的行和列?它可能与布局管理器有关吗?

4

3 回答 3

2

BorderLayout.PAGE_START您可以在尊重首选尺寸高度的位置添加组件

add(new JScrollPane(new JTextArea(5, 10)), BorderLayout.PAGE_START);
于 2013-10-02T16:44:21.847 回答
1

是的,默认布局是 BorderLayout 扩展所有内容以适应整个区域,您必须设置一个新布局,我推荐 GridBagLayout 来广泛控制尺寸,或者我最常用的 BoxLayout

于 2013-10-02T16:42:53.593 回答
0

在这种情况下(没有另一个布局管理器),告诉列数不会控制组件的高度。您需要使用 setSize() 手动设置它的大小。

于 2013-10-02T16:46:12.170 回答