1
我有一個垂直BoxLayout的JPanel,對於一個我希望能夠使用另一個將水平放置元素的BoxLayout的元素。 該代碼會解釋我想要做的事:佈局裏面佈局
private void prepareGUI() {
setBorder(new EmptyBorder(20, 0, 20, 0));
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
JLabel lblTitle = new JLabel("Downloading");
lblTitle.setFont(new Font("Arial", Font.PLAIN, 20));
lblTitle.setAlignmentX(Component.CENTER_ALIGNMENT);
add(lblTitle);
Component verticalStrut = Box.createVerticalStrut(20);
add(verticalStrut);
JProgressBar progressBar = new JProgressBar();
progressBar.setStringPainted(true);
progressBar.setBorder(null);
progressBar.setValue(50);
Dimension size = new Dimension(300, 25);
progressBar.setMinimumSize(size);
progressBar.setMaximumSize(size);
progressBar.setPreferredSize(size);
add(progressBar);
BoxLayout textLayout = new BoxLayout(this, BoxLayout.Y_AXIS);
JLabel lblTest_1 = new JLabel("Test 1!");
textLayout.add(lblTest_1);
JLabel lblTest_2 = new JLabel("Test 2!");
textLayout.add(lblTest_2);
add(textLayout);
}
現在很明顯,這是不可能的,因爲BoxLayout的是不是一個容器(它甚至還要求提供容器被掛在建設 我。問題是什麼是最好的方法來實現我想要的?我應該創建另一個JPanel並把它放在第一個JPanel中嗎?我在想,但它看起來有些複雜,必須有一個更簡單的方法嗎?
最好的辦法 - 就是拿鉛筆和紙畫出來。 –
as a aside:[不要使用setXXSize,ever](http://stackoverflow.com/a/7229519/203657) – kleopatra