编程语言
首页 > 编程语言> > java – 按边缘排列摇摆组件

java – 按边缘排列摇摆组件

作者:互联网

是否可以排列摆动组件?
组件位于单独的面板中,两者都使用流动布局.这两个面板位于使用网格布局的另一个面板中.

你可以看到有一个微妙的区别,我觉得很烦人.我知道所有的jlabels [蓝色/紫色的矩形都有相同的大小,所以我认为它可能是因为”和’*’,但我不确定因为前两个的左边盒子没有排成一列.

面板

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);

解决方法:

AFAIU可以使用GroupLayout来实现.这种布局需要5个水平组和2个垂直组.

有关示例,请参阅How to Use GroupLayout(包括对该图像的讨论).

有关MCVE,另请参见this answer.

标签:java,alignment,vertical-alignment,swing,layout-manager
来源: https://codeday.me/bug/20190715/1469117.html