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