繁体   English   中英

Java Swing文本字段高度

[英]Java Swing Text Field Height

我正在尝试为已经完成的程序编写GUI,该程序将各种文本文件编译成一个完整的笔记本。 此GUI的功能之一是,它在滚动窗格中具有多个文件浏览文本区域和按钮,并且可以使用加号或减号按钮添加或删除更多内容。

问题是,即使我设置了首选大小,textarea也默认占用剩余空间。 有什么办法可以使它与按钮高度相同或至少接近按钮?

这是我的GUI现在的样子。

这是我的代码。

import javax.swing.*;
import java.awt.*;
import java.util.*;

public class GUI {

    public static void main(String[] args) {

        JFrame frame = new JFrame("Notebook Builder");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel contentPanel = new JPanel();
        contentPanel.setLayout(new BoxLayout(contentPanel, BoxLayout.X_AXIS));
        contentPanel.setPreferredSize(new Dimension(860, 500));

        JPanel leftPanel = new JPanel();
        leftPanel.setLayout(new BorderLayout());
        leftPanel.setPreferredSize(new Dimension(480, 500));

        JScrollPane rightPanel = new JScrollPane();
        rightPanel.setPreferredSize(new Dimension(480, 500));

        frame.getContentPane().add(contentPanel);

        contentPanel.add(leftPanel);
        contentPanel.add(rightPanel);

        JPanel headerPanel = new JPanel();
        JLabel headerLabel = new JLabel("Directories");
        headerLabel.setFont(new Font("serif", Font.BOLD, 32));
        headerPanel.add(headerLabel);

        JPanel directoryBrowserPanel = new JPanel();
        directoryBrowserPanel.setLayout(new BoxLayout(directoryBrowserPanel, BoxLayout.Y_AXIS));
        JScrollPane directoryBrowserPanelView = new JScrollPane(directoryBrowserPanel);

        JPanel addOrRemoveButtonPanel = new JPanel();
        addOrRemoveButtonPanel.setLayout(new BoxLayout(addOrRemoveButtonPanel, BoxLayout.X_AXIS));

        JButton remove = new JButton("-");
        JButton add = new JButton("+");

        JPanel directoryBrowserFieldPanel = new JPanel();
        directoryBrowserFieldPanel.setLayout(new BoxLayout(directoryBrowserFieldPanel, BoxLayout.X_AXIS));

        JTextField filePathField = new JTextField();

        JButton fileChooseButton = new JButton("Browse");

        directoryBrowserFieldPanel.add(filePathField);
        directoryBrowserFieldPanel.add(fileChooseButton);
        addOrRemoveButtonPanel.add(remove);
        addOrRemoveButtonPanel.add(Box.createRigidArea(new Dimension(80, 0)));
        addOrRemoveButtonPanel.add(add);
        directoryBrowserPanel.add(directoryBrowserFieldPanel);
        directoryBrowserPanel.add(addOrRemoveButtonPanel);

        JPanel buildButtonPanel = new JPanel();
        JButton buildButton = new JButton("Build Notebook");
        buildButton.setFont(new Font("serif", Font.PLAIN ,12));
        buildButtonPanel.add(BorderLayout.CENTER, buildButton);

        leftPanel.add(BorderLayout.NORTH, headerPanel);
        leftPanel.add(BorderLayout.CENTER, directoryBrowserPanelView);
        leftPanel.add(BorderLayout.SOUTH, buildButtonPanel);

        frame.pack();
        frame.setVisible(true);
    }
}

抱歉,如果这是一个简单的问题,这是我第一次偏离Java的控制台程序。

非常感谢。

使用GridbagLayout而不是BoxLayout。 我认为它更有用。 示例代码如下

int xPos=0;
    int yPos=0;
    directoryBrowserFieldPanel.setLayout(new GridBagLayout());
    directoryBrowserFieldPanel.add(filePathField, new GridBagConstraints(xPos++, yPos, 1, 1, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,0,0,0), 0, 0));
    directoryBrowserFieldPanel.add(fileChooseButton, new GridBagConstraints(xPos++, yPos, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,0,0,0), 0, 0));

安娜,请看一下《布局管理器的视觉指南》

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM