我试图将左侧的所有按钮彼此对齐,但是无论我做什么,似乎总是停留在中间,我已经尝试过“ 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/

10-09 02:57