0

我尝试使用 Borderlayout 订购我的元素,因为 Gridlayout 使所有内容都具有相同的大小。

我看到的是: 我所看到的 在手动调整大小时,我可以拥有以下内容 我想看的

这是我的代码的一部分

public InputPanel() {

    tfield = new TextField("Search your terms here!");
    add(tfield, BorderLayout.PAGE_START);

    searchButton = new JButton("Search");
    searchButton.addActionListener(this);
    add(searchButton, BorderLayout.LINE_START);

    clearButton = new JButton("Clear Text");
    clearButton.addActionListener(this);
    add(clearButton, BorderLayout.LINE_END);

    resultsArea = new TextArea();
    add(resultsArea, BorderLayout.PAGE_END);
}

似乎对安排没有帮助。就像我使用 FlowLayout 一样。

如何正确格式化?

4

2 回答 2

1

似乎您错过了GridBagLayout,这是真正灵活的布局管理器的第一选择。有了BorderLayout你也可以实现很多,但只有多层嵌套,并且构建它的代码非常难以管理。

于 2013-05-08T11:05:15.990 回答
1

对于 BorderLayout,您应该使用 NORTH、SOUTH、EAST、WEST 和 CENTER 来放置组件。要实现上述布局,您应该创建一个具有 FLOWLAYOUT 的面板,您可以在其中添加文本字段、搜索按钮和清除按钮。然后,此面板将放置在 BorderLayout.NORTH 中。在此之后,您将 JTextArea 放入 BorderLayout.NORTH

public InputPanel() {

    JPanel topPanel = new JPanel(); // Create a new panel
    topPanel.setLayout(FlowLayout()); //Left to right alignment is default for FlowLayout

    //Add your textfield and buttons to the panel with flowlayout
    tfield = new TextField("Search your terms here!");  
    topPanel.add(tfield);

    searchButton = new JButton("Search");
    searchButton.addActionListener(this);
    topPanel.add(searchButton);

    clearButton = new JButton("Clear Text");
    clearButton.addActionListener(this);
    topPanel.add(clearButton);

    add(topPanel, BorderLayout.NORTH); // Add the panel containing the buttons and textfield in the north

    resultsArea = new TextArea();
    add(resultsArea, BorderLayout.CENTER); //Add the textarea in the Center

}

这给了我以下外观: 在此处输入图像描述

于 2013-05-08T12:01:55.063 回答