添加另一个JPanel

时间:2017-11-24 15:16:22

标签: java swing

您好我正在使用JFrame创建我的ui,这是我的代码

private static void prepareUI(JPanel jPanel) {
    jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS));
    jPanel.add(new JLabel("Enter Full Text Below"));

    {
        textInput = new JTextArea(5, 1);
        JScrollPane jScrollPane = new JScrollPane(textInput);
        jPanel.add(jScrollPane);
    }

    {
        JSeparator jSeparator = new JSeparator(SwingConstants.HORIZONTAL);
        jSeparator.setMaximumSize(new Dimension(Integer.MAX_VALUE, 1));
        jPanel.add(jSeparator);
    }

    jPanel.add(new JLabel("Or Enter URL And Press Enter"));

    //url
    {
        urlInput = new JTextField(1);
        jPanel.add(urlInput);
    }

    {
        JSeparator jSeparator = new JSeparator(SwingConstants.HORIZONTAL);
        jSeparator.setMaximumSize(new Dimension(Integer.MAX_VALUE, 1));
        jPanel.add(jSeparator);
    }

    jPanel.add(new JLabel("Or"));

    {
        JPanel jPanel1 = new JPanel();
        jPanel1.setLayout(new BoxLayout(jPanel1,BoxLayout.X_AXIS));
        JButton jButton = new JButton("Browse");
        JTextField jTextField = new JTextField(1);
        jPanel1.add(jTextField);
        jPanel1.add(jButton);
        jPanel.add(jPanel1);
    }

    {
        JButton jButton = new JButton("Find Matches");
        jPanel.add(jButton, BorderLayout.CENTER);
    }

    {
        JButton jButton = new JButton("Matches");
        jPanel.add(jButton, BorderLayout.CENTER);
    }
}

但输出不是我预期的

enter image description here

您可以看到第二个JTextField新浏览JButton非常小而且没有占据整个父级,JLabel也不在左侧。我该如何解决?

修改:我删除了setMaximumSize(new Dimension(Integer.MAX_VALUE, 1))并将列大小1添加到所有JTextField,但它尚未修复。 JTextField超过1行高,JLabel不在左侧。

2 个答案:

答案 0 :(得分:1)

jTextField.setMaximumSize(new Dimension(Integer.MAX_VALUE, 1));

请勿尝试手动设置尺寸限制。我猜想组件不能以1的高度显示。

要建议JTextField的大小,您可以使用:

JTextField textField = new JTextField(10);

然后文本字段的大小将保持为10“W”字符。

编辑:

此外,在创建JTextArea时,您使用:

JTextArea textArea = new JTextArea(5, 20);

建议您需要的行/列数。然后组件将计算其大小。

答案 1 :(得分:0)

最好为JPanel使用不同的布局。对于您的设计,您可以使用GridBagLayout。它具有响应性,可以更轻松地管理您的小部件。