Java Swing:如何處理GridBagConstraints的許多不同的插入符?
我創建了一個方法來返回一個GridBagConstraints,以便我不需要不斷地調用新的GridBagConstraints();並設置了一堆變量。它的工作原理是這樣的:
displayPanel.add(labelPanel, createGBC(0, 0, 2);
displayPanel.add(nosePanel, createGBC(1, 0, 3);
displayPanel.add(mainPanel, createGBC(2, 0, 3);
等。
而對於我createGBC代碼:
private GridBagConstraints createGBC(int x, int y, int z) {
gbc = new GridBagConstraints();
gbc.gridx = x;
gbc.gridy = y;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.anchor = (x == 0) ? GridBagConstraints.EAST : GridBagConstraints.WEST;
if (z == 0) gbc.insets = new Insets(0, 0, 0, 0);
else if (z == 1) gbc.insets = new Insets(8, 0, 0, 0);
else if (z == 2) gbc.insets = new Insets(4, 4, 0, 4);
else if (z == 3) gbc.insets = new Insets(0, 2, 0, 2);
else if (z == 4) gbc.insets = new Insets(0, 0, 16, 0);
else if (z == 5) gbc.insets = new Insets(6, 0, 16, 0);
return gbc;
}
我的問題是:有沒有更好的方法來處理許多不同的插圖比單純做了很多其他的陳述?我目前的方法出現了幾個問題。
我開始失去將哪些插入物分配給哪個z值的跟蹤。 (我試圖重構,使其更具可讀性/可重用性)。
其實我可能需要添加更多的插圖預置這將加劇問題1.
我認爲使用[GUI佈局工具](https://netbeans.org/features/java/swing.html)是一個更好的解決方案。我給出的這個鏈接是免費的,非常受好評的IDE,Netbeans。 – markspace
你知道,你不需要每次創建一個'GridBagConstraints'的新實例,每次添加一個組件時,都會複製這些約束,這意味着你可以創建一個實例並且只改變那些改變的值和' GridBagLayout'會在每次添加組件時創建它自己的內部副本 – MadProgrammer
如果它很混亂,請刪除此方法並在添加()調用之前將所有GridBagConstraints設置到位 – ControlAltDel