手动进行Java GUI开发

时间:2014-05-05 04:10:27

标签: java swing user-interface layout

我正在尝试让面板上有4个项目。这些是JLabelJTextFieldJLabelJTextField

在中心,我需要一个JTextArea,并在其左侧有一个可滚动的JList

在底部,我需要3个按钮。

什么是最好的布局管理器,我应该怎么做呢?

只有3列是个好主意吗?

enter image description here

到目前为止我所拥有的:

                    JPanel panel = new JPanel();

        JTextField IDLabel = new JLabel("ID: ");
        IDLabel.setBounds(10, 10, 80, 25);
        panel.add(IDLabel);

        JTextArea IDText = new JTextField(5);
        IDText.setBounds(100, 10, 160, 25);
        panel.add(IDText);

        JLabel TitleLabel = new JLabel("Title: ");
        TitleLabel.setBounds(10, 10, 80, 25);
        panel.add(TitleLabel);

        JTextField TitleText = new JTextField(10);
        TitleText.setBounds(100, 10, 160, 25);
        panel.add(TitleText);


        JList list = new JList(new String[]{"test1", "test22"});

                list.setFixedCellWidth(150);
                list.setFixedCellHeight(50);
                list.setFont(new Font("Serif",Font.BOLD,16));
                list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        panel.add(list);

        JTextArea BodyArea = new JTextArea();
        BodyArea.setSize(200, 200);
        BodyArea.setText("Test area");
        panel.add(BodyArea);

2 个答案:

答案 0 :(得分:2)

您很可能需要使用布局组合(AKA复合布局),例如

北小组

创建JPanel并为其指定FlowLayoutGridBagLayoutGridLayout,具体取决于您希望实现的目标。

JLabelJTextFieldJLabelJTextField添加到其中。

中心小组

使用JPanel创建BorderLayout。将JTextArea添加到CENTER位置,将JList添加到WEST位置

南方小组

根据您想要实现的目标,JPanelFlowLayoutGridBagLayout抓住GridLayout

添加按钮。

将它们放在一起

使用JPanel创建BorderLayout,添加" north"面板到NORTH位置,"中心"面板到CENTER位置和"南面"面板到SOUTH位置

您可以使用单个容器和GridBagLayout,但这需要做很多工作。

请查看Laying Out Components Within a Container了解详情

答案 1 :(得分:1)

也许从主要布局的BorderLayout开始。然后,您可以将组件添加到PAGE_START(NORTH),LINE_START(WEST)和CENTER以及PAGE_END(SOUTH)。有关更多信息和示例,请查看Using Layout Manager上Swing教程中的部分。

当然,如果要在单个区域中显示多个组件,也可以使用面板。因此,您的按钮将首先添加到面板中。

另外,请遵循标准命名约定。变量名不应以大写字符开头(即BodyArea,TitleText)。你的变量如(面板,列表)正确,所以要保持一致。