繁体   English   中英

由“中间”面板分隔的两个JList的布局? (Java秋千)

[英]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占据所有可用的水平空间。 我怎样才能做到这一点? 基本上,我想要的外观是这样的。

在此处输入图片说明

我将使用GridBagLayout

中心按钮将包含在JPanel中。

JList,按钮JPanel和JList将包含在1行中,该行中包含3个元素。

在JList之间放置水平胶水:

box.add(Box.createHorizontalGlue())

您应该使用setPreferredSizesetMinimumSize方法。 这些可以与此方法结合使用,以使窗格大小基于屏幕大小:

screen Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();

尽管您可能只是将窗口设置为固定大小。

对于列表,您应该将项目添加到JPanel ,根据对象数设置面板的大小,然后使用setViewPortJScrollPane视图设置为该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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM