我仍在試圖瞭解佈局管理器是如何工作的。我用兩個JPanel做了一個Frame。 第一個包含帶boxLayout的textArea。 第二個包含一個帶按鈕的流佈局。佈局管理器preferredSize Java
我相應地設置每個面板的首選大小,打包它們,但得到意想不到的結果。
import java.awt.*;
import javax.swing.*;
public class LayoutMgrTest
{
public static void main(String[] args)
{
TableBasic frame = new TableBasic();
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setVisible(true);
frame.getContentPane().setLayout(new GridLayout(2,1));
JPanel controlPane = new JPanel();
JPanel buttonPane = new JPanel();
controlPane.setLayout(new BoxLayout(controlPane, BoxLayout.PAGE_AXIS));
controlPane.setPreferredSize(new Dimension(200, 200));
controlPane.add(new JScrollPane(new JTextArea()));
buttonPane.setLayout(new FlowLayout(FlowLayout.LEFT));
buttonPane.setPreferredSize(new Dimension(100,20));
buttonPane.add(new JButton("Button1"));
buttonPane.add(new JButton("Button2"));
frame.getContentPane().add(controlPane, BorderLayout.NORTH);
frame.getContentPane().add(buttonPane, BorderLayout.SOUTH);
frame.setSize(new Dimension(500,500));
frame.pack();
}
}
無論我做什麼,如果我使用網格佈局,它似乎永遠分配的可用空間的一半每個控制。我被告知:
每行的高度取決於每行添加的每個組件的高度 。
的buttonpane的高度爲20。它的分配比它更:
有什麼不對的代碼?
我想離開這兩個JPanels完整請。將文本框和按鈕直接添加到框架很容易,但我需要使用JPanels(因爲我將添加邊框和其他東西)。
@mKorbel - 謝謝。我的做法總是儘可能少地改變,但是你認爲我更好:) – MByD
快手男,歡迎您 – mKorbel
感謝您的回答。這段時間有點晚了mKorbel:P你通常總是對Swing GUI有很大的幫助:) – David