2009-12-22 50 views
2

在我的申請,我有類似於如下佈局:如何根據可用空間調整特定組件的大小?

@@@@@@@
XXXXXXX***
XXXXXXX***
XXXXXXX***
%%%%%%%

在這種佈局中,X是一個JTable。其他組件可以保持相同的大小。有沒有一種佈局或策略可以讓JTable(X)根據可用的屏幕大小調整大小,並讓其他所有內容都保持正確?

謝謝。

回答

5

這看起來很像我的BorderLayout。你嘗試過嗎?

+0

如何讓頂部和底部組件佔據BorderLayout的整個寬度?當我嘗試它時,它將水平地填充所有三個組件。 – 2009-12-22 22:11:38

+0

您可以使用三個BorderLayout面板p1,p2,p3和 '@'設置爲p1的北部,'X'爲p1的中心,'%'爲p1的南部。 '*'p2的中心與Box.createRigidArea(大小)添加到北部和第四。 和p3將包含p1和p2,其中p1作爲CENTER和p2作爲EAST。 – dennisjtaylor 2009-12-22 22:39:47

+0

是的,我知道你可以用多種佈局來做。我只是好奇,如果最初的答案是表明它可以完成只有一個佈局。 – 2009-12-24 16:40:01

0

它也可以用GroupLayout完成,但它是爲GUI構建器設計的,因爲它非常冗長。所以如果你已經有了現有的代碼,你可能不想先嚐試它。

0

我是JGoodies FormLayout的忠實粉絲。下面是一個使用FormLayout完成此操作的示例代碼。

JPanel panel = new JPanel();   
    FormLayout layout = new FormLayout("100dlu, 20dlu:grow", "pref, pref, pref"); 
    panel.setLayout(layout); 

    JTextField t1 = new JTextField(); 
    JTextField t2 = new JTextField(); 
    JTable tb = new JTable(); 
    JScrollPane sp = new JScrollPane(); 
    sp.setViewportView(tb); 

    CellConstraints cc = new CellConstraints(); 
    panel.add(t1, cc.xy(1, 1)); 
    panel.add(t2, cc.xy(1, 3)); 
    panel.add(sp, cc.xyw(1, 2, 2)); 
相關問題