簡體   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