0

我正在使用 BoxLayout 在一行中水平布局 3 个组件 - 两个 JList(J1 和 J2)和一个介于 (X) 之间的 JPanel。

---------------
|             |
|             |
|  J1  X  J2  |
|             |
|             |
---------------

我遇到的问题是 BoxLayout 使每一列的大小相等,但我想要的是 X 成为它的最小大小,而 J1 和 J2 占据所有可用的水平空间。我怎样才能做到这一点?基本上,我想要的外观是这样的。

在此处输入图像描述

4

4 回答 4

1

我会使用GridBagLayout

中心按钮将包含在 JPanel 中。

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

于 2012-04-30T14:23:49.640 回答
0

在 JList 之间放置水平胶水:

box.add(Box.createHorizontalGlue())
于 2012-04-30T13:32:45.457 回答
-1

您应该使用setPreferredSizeandsetMinimumSize方法。这些可以与此方法结合使用,以根据屏幕大小确定窗格大小:

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

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

对于列表,您应该将项目添加到 a JPanel,根据对象的数量设置面板的大小,然后将JScrollPane视图设置为JPanelwithsetViewPort以确保滚动窗格的大小正确。

于 2012-04-30T10:20:34.637 回答
-1
    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);
于 2017-07-24T15:05:17.800 回答