是否可以排列摆动部件? 这些组件位于使用流布局的独立面板中。这两个面板位于另一个使用网格布局的面板中。通过边缘排列摆动部件
正如你可以看到有一个微妙的差异,我觉得很讨厌。我知道所有的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