[英]Layout for two JLists separated by a “middle” panel? (Java Swing)
我正在使用BoxLayout在水平方向上连续布置3个组件-两个JList(J1和J2)和一个介于(X)之间的JPanel。
---------------
| |
| |
| J1 X J2 |
| |
| |
---------------
我遇到的问题是BoxLayout使每一列的大小相等,但是我想要的是X成为其最小大小,而J1和J2占据所有可用的水平空间。 我怎样才能做到这一点? 基本上,我想要的外观是这样的。
在JList之间放置水平胶水:
box.add(Box.createHorizontalGlue())
您应该使用setPreferredSize
和setMinimumSize
方法。 这些可以与此方法结合使用,以使窗格大小基于屏幕大小:
screen Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
尽管您可能只是将窗口设置为固定大小。
对于列表,您应该将项目添加到JPanel
,根据对象数设置面板的大小,然后使用setViewPort
将JScrollPane
视图设置为该JPanel
以确保滚动窗格的大小正确。
JPanel panel_20 = new JPanel();
tabbedPane_2.addTab("New tab", null, panel_20, null);
panel_20.setLayout(new BoxLayout(panel_20, BoxLayout.X_AXIS));
JPanel panel_24 = new JPanel();
panel_24.setBorder(new EmptyBorder(3, 3, 3, 3));
panel_20.add(panel_24);
panel_24.setLayout(new BorderLayout(0, 0));
JList list_7 = new JList();
list_7.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null));
panel_24.add(list_7);
JPanel panel_25 = new JPanel();
panel_20.add(panel_25);
panel_25.setLayout(new BoxLayout(panel_25, BoxLayout.Y_AXIS));
JButton btnNewButton_4 = new JButton(">");
panel_25.add(btnNewButton_4);
JButton btnNewButton_5 = new JButton("<");
panel_25.add(btnNewButton_5);
JPanel panel_26 = new JPanel();
panel_26.setBorder(new EmptyBorder(3, 3, 3, 3));
panel_20.add(panel_26);
panel_26.setLayout(new BorderLayout(0, 0));
JList list_8 = new JList();
list_8.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null));
panel_26.add(list_8, BorderLayout.CENTER);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.