【发布时间】:2016-07-01 11:11:14
【问题描述】:
我想用 Java Swing 创建以下 GUI。
由于我对 Java Swing 的经验不够,我不确定如何准确地重新创建那个 GUI。
我尝试过使用如下所示的 GridLayout:
我尝试过其他 LayoutManager,但由于我缺乏经验,我什至无法获得任何与我想要实现的 GUI 相似的东西。
我可能必须使用 GridBagLayout,但我已经尝试过了,但根本无法完成任何事情。 我不确定如何准确地使用 GridBagLayout,尤其是因为所需的列数量存在差异(2、2 和 3)。
这是用于创建第二个 GUI 的代码:
import java.awt.*;
import javax.swing.*;
public class GUITest extends JFrame {
public GUITest() {
super("Testing Title");
Container pane = getContentPane();
pane.setLayout(new GridLayout(3,1));
pane.add(getHeader());
pane.add(getTextArea());
pane.add(getButtonPanel());
}
public JComponent getHeader() {
JPanel labelPanel = new JPanel();
labelPanel.setLayout(new GridLayout(1,2));
labelPanel.setSize(getPreferredSize());
JLabel labelLocal = new JLabel("Left value: ", JLabel.CENTER);
JLabel labelDB = new JLabel("Right value: ", JLabel.CENTER);
labelPanel.add(labelLocal);
labelPanel.add(labelDB);
return labelPanel;
}
public JComponent getTextArea() {
JPanel textPanel = new JPanel();
textPanel.setLayout(new GridLayout(1,2,5,0));
JTextArea testTextArea = new JTextArea();
testTextArea.setEditable(false);
JScrollPane sp1 = new JScrollPane(testTextArea);
JTextArea testTextArea2 = new JTextArea();
JScrollPane sp2 = new JScrollPane(testTextArea2);
testTextArea2.setEditable(false);
testTextArea.setText("Hello Hello Hello\nTesting!\ntesterino\ntesteroni");
testTextArea2.setText("Hello Hello Hello\nTesting!\ntest\nABC123\ncdef123\nhijk123");
textPanel.add(sp1);
textPanel.add(sp2);
return textPanel;
}
public JComponent getButtonPanel() {
JPanel inner = new JPanel();
inner.setLayout(new FlowLayout((FlowLayout.CENTER),0,100));
inner.add(new JButton("Do something"));
inner.add(new JButton("Do something different"));
inner.add(new JButton("Do something even more different"));
return inner;
}
public static void main(String[] args) {
GUITest e = new GUITest();
e.setSize(700, 500);
e.setVisible(true);
e.setResizable(false);
e.setDefaultCloseOperation(EXIT_ON_CLOSE);
e.setLocationRelativeTo(null);
}
}
感谢任何形式的支持!
【问题讨论】:
-
您可以使用
MigLayout。很简单 -
NetBeans IDE 的 GUI 编辑器是我的方法。因为与业务逻辑相比,所有这些代码都不是很有趣。还提供了属性等以供尝试。
-
@JoopEggen 我不明白你在说什么......就像当有两件事但你专注于一件事时
-
@taclight 抱歉,您是什么意思? --- BranislavLazic:感谢您的建议,但我不想为这么小的任务使用额外的 .jar 文件。
-
@JoopEggen 感谢您的澄清,现在有意义
标签: java swing user-interface grid-layout