我看How To Use BoxLayout文件,其中明確表示,如何使用BoxLayout將組件拉伸到整行上?
如果沒有什麼組件的最大寬度?在這種情況下,如果所有組件都具有相同的X對齊,則所有組件均爲 ,其寬度與其容器一樣寬。
我們假設我們將大量JButton
實例添加到JPanel
。如果這些按鈕的最大寬度是無並且我們在所有這些按鈕上調用setAlignmentX(Component.LEFT_ALIGNMENT)
- 然後這些按鈕中的每一個都應該在整個行上延伸。該文檔甚至使用下面的圖片說明了這一點。
我不能得到這個工作!
我試過在按鈕上試過setMaximumSize(null
)和setMaximumSize(new Dimension(-1,-1))
和setMaximumSize(new Dimension(0,0))
,但沒有給我描述的行爲。
如果沒有什麼組件的最大寬度:
什麼excactly當它說沒有文件的意思
什麼是無最大寬度?
我已經能夠生產的最好的是下面。閱讀文檔我會期望按鈕應該能夠在整個行上展開。我知道我也可以使用其他佈局管理器,但我希望通過BoxLayout
來實現這一點(授予文檔是正確的/我已經理解了文檔的權利)。
public class CustomList extends JPanel {
private final Box box = Box.createVerticalBox();
public CustomList() {
for (int i = 0; i < 10; i++) {
JButton b = new JButton("Button item" + i);
//b.setMaximumSize(new Dimension(0,0));
b.setAlignmentX(Component.LEFT_ALIGNMENT);
box.add(b);
}
setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
add(box, BorderLayout.CENTER);
}
public static void main(String[] args) {
CustomList l = new CustomList();
l.setSize(200, 200);
l.setBackground(Color.red);
JFrame frame = new JFrame("Vertical Box");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(l, BorderLayout.CENTER);
frame.setSize(300, 200);
frame.setVisible(true);
}
}
我看到,如果我用JPanel替換JButton - 不管是否設置了最大大小 - 那麼每個JPanel將跨越整個行。 – sbrattla