我目前有一個JButtons數組,我想將它們放在兩列中的JPanel上,均勻分割。所以如果數組中有8個按鈕,左列將會有4個按鈕,右列將會有4個按鈕。但是,如果數組中有7個按鈕,則左列將包含4個按鈕,右列將包含3個按鈕。如何在兩列之間動態添加動態分配的組件?
我開始研究併爲這種情況創建了一些基本邏輯,並想知道我所做的代碼是否存在邏輯錯誤(或者可能是更好的方法)。
這裏是代碼,我拿出
public class SwingTest {
public static void main(String[] args) {
JFrame frame = new JFrame();
JButton b1 = new JButton();
b1.setText("Button1");
JButton b2 = new JButton();
b2.setText("Button2");
JButton b3 = new JButton();
b3.setText("Button3");
JButton b4 = new JButton();
b4.setText("Button4");
JButton b5 = new JButton();
b5.setText("Button5");
JButton b6 = new JButton();
b6.setText("Button6");
ArrayList<JButton> jButtonList = new ArrayList();
jButtonList.add(b1);
jButtonList.add(b2);
jButtonList.add(b3);
jButtonList.add(b4);
jButtonList.add(b5);
jButtonList.add(b6);
JPanel panel = new JPanel();
panel.setLayout(new java.awt.GridBagLayout());
double halfList = Math.ceil((jButtonList.size()/2.0));
int gridX = 0, gridY = 0;
for(int i = 0; i < jButtonList.size(); i++) {
GridBagConstraints gridBagConstraints = new java.awt.GridBagConstraints();
if(gridY == (int)halfList) {
gridX++;
gridY = 0;
}
gridBagConstraints.gridx = gridX;
gridBagConstraints.gridy = gridY;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
gridBagConstraints.insets = new java.awt.Insets(1, 0, 1, 0);
panel.add(jButtonList.get(i), gridBagConstraints);
gridY++;
}
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
}
的示例代碼看起來做工精細,但還能有它可能打嗝的情況下?
我會盡快嘗試,因爲它比我當前的代碼少得多。 - 測試過!這段代碼確實做得很好。感謝您的信息。在將此標記爲最佳答案之前,我現在在那裏的邏輯有什麼問題嗎? – WilliamShatner
我對此不確定的一件事是,它按行添加按鈕而不是按列添加按鈕(還沒有決定是否希望它們按行或列添加) – WilliamShatner
您的邏輯可以,只需更改FOR對於我放在這裏的panel.setLayout和panel.setLayout(新的GridLayout(0,2)應該可以工作 – Roger