java - 在 JPanel 上填充 JTextField

标签 java swing whitespace

使用下面的代码,我将使用 JTextFields 和 JLabels 创建一个 JPanel,并将该面板添加到另一个 JPanel。如何调整 infoPanel 上 JTextField 之间的间距?

我尝试过 GridBagLayout 和 GridLayout,但结果不同且不理想。现在的方式至少让它们垂直对齐,但我似乎无法在它们的上方和下方添加空间。有这方面的高手可以帮忙吗?

public DrawPanelMain() {
    JPanel btnPanel = new JPanel(); //Creates a new Panel for the buttons
    JPanel infoPanel = new JPanel();
    JPanel fields = new JPanel();

    //Text boxes for infoPanel
    JTextField textField1 = new JTextField(20);
    JTextField textField2 = new JTextField(20);
    JTextField textField3 = new JTextField(20);
    JTextField textField4 = new JTextField(20);
    JTextField textField5 = new JTextField(20);
    JTextField textField6 = new JTextField(20);

    //JLabels for infoPanel
    JLabel jLabel1 = new JLabel("Serial Number: ");
    JLabel jLabel2 = new JLabel("Information: ");
    JLabel jLabel3 = new JLabel("Information: ");
    JLabel jLabel4 = new JLabel("Information: ");
    JLabel jLabel5 = new JLabel("Information: ");
    JLabel jLabel6 = new JLabel("Information: ");

    //These are the buttons that will  be added to the btnPanel
    btnPanel.add(new JButton(new AddSwitchAction("Add Switch Panel")));
    btnPanel.add(new JButton(new PushConfigAction("Push Config")));
    btnPanel.add(new JButton(new ActivateAllAction("Activate All")));
    btnPanel.add(new JButton(new DeactivateAllAction("Deactivate All")));

    //Fields that will be added to infoPanel
    fields.add(jLabel1);
    fields.add(textField1);
    fields.add(jLabel2);
    fields.add(textField2);
    fields.add(jLabel3);
    fields.add(textField3);
    fields.add(jLabel4);
    fields.add(textField4);
    fields.add(jLabel5);
    fields.add(textField5);
    fields.add(jLabel6);
    fields.add(textField6);

    //Sets border padding for the infoPanel
    fields.setBorder(new EmptyBorder(20, 20, 0, 20));

    //Draws border for the infoPanel
    infoPanel.setBorder(BorderFactory.createRaisedBevelBorder());

    //Sets layout for the fields panel
    fields.setLayout(new GridLayout(6, 1));

    //Add fields to infoPanel
    infoPanel.add(fields);

    //Add panels to tabbedPane
    setLayout(new BorderLayout());
    add(tabbedPane, BorderLayout.CENTER);
    add(btnPanel, BorderLayout.PAGE_END);
    add(infoPanel, BorderLayout.EAST);

}

最佳答案

创建复合边框

field.setBorder(BorderFactory.createCompoundBorder(
        field.getBorder(), 
        BorderFactory.createEmptyBorder(int top, int left, int bottom, int right)));

或者添加一些插图

field.setMargin(new java.awt.Insets(int top, int left, int bottom, int right));

关于java - 在 JPanel 上填充 JTextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31498398/

相关文章:

java - 当我单击带有滑动菜单的菜单图标时崩溃

java - 无需单击按钮即可动态添加组件

java - 从字符串中删除所有空格但保留一个换行符

php - 在 PHP 中仅用一个空格替换多个空格和换行符

python - 如何删除 Python 中的前导空格?

java - 具有多个 key (不同密码)的 JKS

java - 无法访问JSP中的CSS和JavaScript文件

java - 如何将 Java 中 SQL 查询的结果打印到每列的单独 JTextField 中?

java - Canvas 不随 Java 中的窗口调整大小?

java - 如何从 JList 获取索引 n 处的组件(不是数据)