是否可以排列擺動部件? 這些組件位於使用流佈局的獨立面板中。這兩個面板位於另一個使用網格佈局的面板中。通過邊緣排列擺動部件
正如你可以看到有一個微妙的差異,我覺得很討厭。我知道所有的jlabel [藍色/紫色矩形都具有相同的大小,所以我認爲這可能是因爲'+'和'*',但我不確定,因爲第一個的左側兩個箱子沒有排隊。
面板
JPanel panel2 = new JPanel(new GridLayout(4, 1));
JPanel panel2a = new JPanel(new FlowLayout());
JPanel panel2b = new JPanel(new FlowLayout());
第一兩個矩形(紫色)
add1 = new JLabel("", JLabel.CENTER);
add1.setTransferHandler(new TransferHandler("text"));
add1.setBorder(b2);
add2 = new JLabel("", JLabel.CENTER);
add2.setTransferHandler(new TransferHandler("text"));
add2.setBorder(b2);
兩個藍色矩形
textFieldA = new JTextField();
textFieldA.setHorizontalAlignment(JTextField.CENTER);
textFieldA.setEditable(false);
textFieldA.setBorder(new LineBorder(Color.blue));
textFieldM = new JTextField();
textFieldM.setHorizontalAlignment(JTextField.CENTER);
textFieldM.setEditable(false);
textFieldM.setBorder(new LineBorder(Color.blue));
+和*
opA = new JLabel("+", JLabel.CENTER);
opS = new JLabel("*", JLabel.CENTER);
顯示了矩形的大小相同
Dimension d = card1.getPreferredSize();
int width = d.width + 100;
int height = d.height + 50;
add1.setPreferredSize(new Dimension(width, height));
add2.setPreferredSize(new Dimension(width, height));
mult1.setPreferredSize(new Dimension(width, height));
mult2.setPreferredSize(new Dimension(width, height));
textFieldA.setPreferredSize(new Dimension(width, height));
textFieldM.setPreferredSize(new Dimension(width, height));
添加到面板
panel2a.add(add1);
panel2a.add(opA);
panel2a.add(add2);
panel2a.add(enterA);
panel2a.add(textFieldA);
panel2c.add(mult1);
panel2c.add(opM);
panel2c.add(mult2);
panel2c.add(enterM);
panel2c.add(textFieldM);
panel2.add(panel2a);
panel2.add(panel2c);
與常規佈局的我不這麼認爲。 Netbeans使用佈局來對齊組件(我認爲)使用代碼非常難看。 (這是一個自定義佈局,可能會包含在最近的Java版本中) – madth3
當然,請看[佈局管理器視覺指南](http://docs.oracle.com/javase/tutorial/uiswing/layout/ visual.html)。 'GridBagLayout'浮現在腦海 – MadProgrammer
另請參見[我應該避免使用Java Swing中的set(Preferred | Maximum | Minimum)Size方法](http://stackoverflow.com/q/7229226/230513)? – trashgod