我不能将它与我的Jpanel的右侧部分对齐

时间:2016-12-17 15:47:18

标签: java swing jframe

我试图将左边的所有按钮全部对齐,但无论我做什么,似乎总是留在中心,我尝试过“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);

1 个答案:

答案 0 :(得分:2)

ID

一方面,您将所有组件添加到同一个单元格,因为您使用相同的约束。如果你想要它们在不同的行上,那么你需要指定一个不同的&#34; gridy&#34;每个组件的价值。

  

似乎总是留在中心,

除非您指定c.gridx = 0; c.anchor = GridBagConstraints.EAST; setLayout(layout); add(Button1, c); add(Button2, c); add(Button3, c); add(exit); 值,否则这是默认行为。

更简单的方法是使用带有weightx/weighty的JPanel。将所有按钮添加到面板。最后,使用以下方法将面板添加到框架中:

GridLayout

我建议您先阅读Layout Managers上Swing教程中的部分。上面提到了所有布局管理器的工作示例。

其他问题:

  1. 变量名称不应以大写字母开头。
  2. 不要在组件上使用setPreferredSize()。每个组件应确定自己的首选大小。然后,布局管理器将使用此信息。
  3. GUI代码应在Event Dispatch Thread(EDT)上执行。
  4. Swing教程都遵循上述标准,因此请下载演示代码以便从中学习。