1 回答
TA贡献1827条经验 获得超8个赞
给我们一个它目前所做的事情的图片并没有真正的帮助,因为我们不知道你想要实现什么,很难提出一个确切的建议。
因此,所看到的是试图:
在顶部显示 3 个按钮
让文本区域填充底部的剩余空间
因此,我建议您永远不需要使用单个布局管理器。很多时候,布局管理器的组合更容易。
所以我建议你:
使用边界布局作为主布局。
为按钮创建一个面板,并添加到边框布局
Page_START将滚动窗格添加到“边界布局”中。
CENTER
所以基本代码是:
setLayout( new BorderLayout() );
JPanel buttonsPanel = new JPanel();
buttonsPanel.add(run);
buttonsPane.add((open);
buttonsPanel.add(exit);
add(buttonsPanel, BorderLayout.PAGE_START);
JTextArea textArea = new JTextArea(10, 30); // give text area a default preferred size
add(new JScrollPane(textArea), BorderLayout.CENTER);
比尝试使用网格包布局更简单,代码更少。
但是,如果您想练习使用网格包布局,请首先阅读有关如何使用网格包布局的 Swing 教程,以获取有关约束的更多信息。
基本代码可能如下所示:
gbc.gridx = 0;
gbc.gridy = 0;
add(run, gbc);
gbc.gridx = 1;
gbc.gridy = 0;
add(open, gbc);
gbc.gridx = 2;
gbc.gridy = 0;
add(exit, gbc);
localConsole = new JTextArea(5, 20);
JScrollPane scrollPane = new JScrollPane(localConsole);
gbc.fill = GridBagConstraints.CENTER;
gbc.gridx = 0;
gbc.gridy = 1;
gbc.gridwidth = 3; // try this with 1 and 2 to see the difference.
add(scrollPane, gbc);
也就是说,您不能只是随机使用网格x/网格宽度/网格高度值。
组件需要显示在网格中。你不能在网格中留下间隙。
因此,如果您希望按钮排成一行,则需要为相同的网格值按顺序递增 gridx。
如果需要按钮下方的文本区域,请按顺序递增网格,并从新的 gridx 值开始。
添加回答
举报
