我正在学习JavaGUI和布局。
我的电流输出是这样的
电流输出:
但是我想让列表视图和左边的一个按钮,和右边的其他组件像这样
结果输出应如下所示:
我试图通过添加borderlayout将其分为两列,例如,
JFrame frame = new JFrame();
frame.setLayout(new FlowLayout());
//List on the left side
String[] tests = new String[] { "test1", "test2", "test3", "test4", "test5" };
JList<String> list = new JList<String>();
list.setListData(tests);
list.setSelectionBackground(Color.BLUE);
list.setSelectionForeground(Color.WHITE);
list.setFixedCellWidth(100);
frame.add(list, BorderLayout.WEST);
//List on the left side
//All Components on the right Side
JPanel namePanel = new JPanel();
JPanel emailPanel = new JPanel();
JLabel nameLabel = new JLabel("Name");
JLabel emailLabel = new JLabel("Email");
JTextField name = new JTextField(10);
JTextField email = new JTextField(10);
namePanel.add(nameLabel);
namePanel.add(name);
emailPanel.add(emailLabel);
emailPanel.add(email);
frame.add(namePanel, BorderLayout.EAST);
frame.add(emailPanel, BorderLayout.EAST);
// CheckBox Panel
JPanel checkBoxPanel = new JPanel();
JLabel lblHobby = new JLabel("Programming Language:");
// CHECKBOX LIST
JCheckBox check1 = new JCheckBox("Java");
JCheckBox check2 = new JCheckBox("C++");
JCheckBox check3 = new JCheckBox("C");
JCheckBox check4 = new JCheckBox("Python");
JCheckBox check5 = new JCheckBox("Other");
checkBoxPanel.add(lblHobby);
checkBoxPanel.add(check1);
checkBoxPanel.add(check2);
checkBoxPanel.add(check3);
checkBoxPanel.add(check4);
checkBoxPanel.add(check5);
frame.add(checkBoxPanel, BorderLayout.EAST);
// CheckBox Panel
// BUTTON
JButton saveButton = new JButton("Save");
JButton newButton = new JButton("New");
frame.add(saveButton, BorderLayout.EAST);
frame.add(newButton, BorderLayout.EAST);
// BUTTON
//Set size, title and visible
frame.setSize(500, 400);
//frame.setResizable(false);
frame.setTitle("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
为了在gui中创建两列,我需要做什么?
2条答案
按热度按时间bq3bfh9z1#
这就是我如何布局这个gui:
从内到外,这些布局将是:
GREEN
-FlowLayout
中间的一个从顶部居中,另外两个左对齐。PINK
-aGridBagLayout
. 2列下至Text field2:
,其后为单列。RED
-aBorderLayout
名单在LINE_START
、田地和Save
/New
中的按钮CENTER
,以及PAGE_END
.虽然有可能用一个网格包布局创建整个视图,但这不会导致上述“分而治之”方法产生易于维护的代码。
iq0todco2#
不要改变布局。flowlayout只是将组件从一行流到另一行。尝试将框架调整得更宽,看看组件是如何从一行到另一行进行 Package 的。
框架内容窗格的默认布局管理器是
BorderLayout
. 你通常想要保留它,除非你有充分的理由改变它。然后将gui设计成逻辑面板。每个面板可以使用不同的布局管理器。阅读有关布局管理器的swing教程。
因此,您可以将jlist添加到框架的左侧:
然后创建要添加到中心的面板:
因此,为中心选择一个布局管理器。也许您使用boxlayout,然后为每行组件添加子面板。