我正在尝试让面板上有4个项目。这些是JLabel
,JTextField
,JLabel
和JTextField
。
在中心,我需要一个JTextArea
,并在其左侧有一个可滚动的JList
。
在底部,我需要3个按钮。
什么是最好的布局管理器,我应该怎么做呢?
只有3列是个好主意吗?
到目前为止我所拥有的:
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);
答案 0 :(得分:2)
您很可能需要使用布局组合(AKA复合布局),例如
北小组
创建JPanel
并为其指定FlowLayout
或GridBagLayout
或GridLayout
,具体取决于您希望实现的目标。
将JLabel
,JTextField
,JLabel
,JTextField
添加到其中。
中心小组
使用JPanel
创建BorderLayout
。将JTextArea
添加到CENTER
位置,将JList
添加到WEST
位置
南方小组
根据您想要实现的目标,JPanel
或FlowLayout
或GridBagLayout
抓住GridLayout
。
添加按钮。
将它们放在一起
使用JPanel
创建BorderLayout
,添加" north"面板到NORTH
位置,"中心"面板到CENTER
位置和"南面"面板到SOUTH
位置
您可以使用单个容器和GridBagLayout
,但这需要做很多工作。
答案 1 :(得分:1)
也许从主要布局的BorderLayout
开始。然后,您可以将组件添加到PAGE_START(NORTH),LINE_START(WEST)和CENTER以及PAGE_END(SOUTH)。有关更多信息和示例,请查看Using Layout Manager上Swing教程中的部分。
当然,如果要在单个区域中显示多个组件,也可以使用面板。因此,您的按钮将首先添加到面板中。
另外,请遵循标准命名约定。变量名不应以大写字符开头(即BodyArea,TitleText)。你的变量如(面板,列表)正确,所以要保持一致。