我试图将左侧的所有按钮彼此对齐,但是无论我做什么,似乎总是停留在中间,我已经尝试过“ c.anchor = GridBagConstraints.EAST;”。但这没有帮助,现在我被卡住了,请帮助。
JButton Button1 = new JButton("<html> Li <center> <small> 7 <br> 3<small/> <center/> <html/> ");
JButton Button2 = new JButton("<html> Na <center> <small> 32<br> 11<small/> <center/> <html/> ");
JButton Button3 = new JButton("<html>K<center><small> 39 <br> 19<small/> <center/> <html/> ");
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
int width = gd.getDisplayMode().getWidth();
int height = gd.getDisplayMode().getHeight();
Button1.setPreferredSize(new Dimension(50, 50));
Button2.setPreferredSize(new Dimension(50, 50));
Button3.setPreferredSize(new Dimension(50, 50));
GridBagLayout layout = new GridBagLayout() ;
GridBagConstraints c = new GridBagConstraints();
c.gridx = 0;
c.anchor = GridBagConstraints.EAST;
setLayout(layout);
add(Button1, c);
add(Button2, c);
add(Button3, c);
add(exit);
setSize(width, height);
setExtendedState(JFrame.MAXIMIZED_BOTH);
//TODO Align to left
setUndecorated(true);
setLocationRelativeTo(null);
最佳答案
c.gridx = 0;
c.anchor = GridBagConstraints.EAST;
setLayout(layout);
add(Button1, c);
add(Button2, c);
add(Button3, c);
add(exit);
好吧,因为您使用了相同的约束,所以您要将所有组件都添加到同一单元格中。如果要将它们放在不同的行上,则需要为每个组件指定一个不同的“灰色”值。
它似乎总是停留在中心,
除非指定
weightx/weighty
值,否则这是默认行为。更简单的方法是将JPanel与
GridLayout
一起使用。将所有按钮添加到面板。最后,使用以下命令将面板添加到框架中:frame.add(buttonPanel, BorderLayout.LINE_START);
我建议您首先阅读Layout Managers的Swing教程中的这一节。有上面提到的所有布局管理器的工作示例。
其他问题:
变量名称不应以大写字母开头。
不要在组件上使用setPreferredSize()。每个组件应确定自己的首选大小。然后,布局管理器将使用此信息。
GUI代码应在事件调度线程(EDT)上执行。
Swing教程均遵循上述标准,因此请下载演示代码以从中学习。
关于java - 我无法将此对齐到Jpanel的右侧,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41200313/