嘿伙计们我真的很喜欢Java,但我已经创建了一个简单的程序,其中有1个JLabel表示你想要继续,2个JButtons表示是,而且有一个说不 .
我正在使用GridBaGLayout来组织JPanel / JFrame . 我的程序编译并运行得很好,但GridBagLayout将我所有的组件集中在JFrame的中心 . 由于我刚接触摇摆,有人可以告诉我如何将所有组件对齐到JFrame的左上角?
谢谢! :)
它可能不是一个真正的答案,但无论如何:停止使用GridBagLayout . 它有很多陷阱,使用起来很脆弱,所以请不要使用它 .
使用更好的替代方案,例如MigLayout,并了解这一点 . Don 't bother learning any of Java'是默认的布局管理器,除非你确实需要 .
使用MigLayout的示例:
JPanel panel = new JPanel(new MigLayout("","","")); panel.add(myJButton1, "wrap"); panel.add(myJButton2, "wrap"); panel.add(myJButton3, "wrap"); panel.add(myJButton4, "wrap"); panel.add(myJButton5, "wrap"); panel.add(myJButton6, "wrap");
有几种方法可以做到,你可以先将所有组件添加到另一个容器,然后在容器中布置该容器,但基本原则仍然是......
import java.awt.EventQueue; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; public class Test { public static void main(String[] args) { new Test(); } public Test() { EventQueue.invokeLater(new Runnable() { @Override public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { ex.printStackTrace(); } JFrame frame = new JFrame("Testing"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(new TestPane()); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } public class TestPane extends JPanel { public TestPane() { setLayout(new GridBagLayout()); GridBagConstraints gbc= new GridBagConstraints(); gbc.weightx = 1; gbc.anchor = GridBagConstraints.WEST; gbc.gridwidth = GridBagConstraints.REMAINDER; for (int index = 0; index < 10; index++) { add(new JButton("Test"), gbc); } gbc.weighty = 1; add(new JLabel(), gbc); } } }
基本上,这会在最后一行添加一个“隐藏”组件,它想要占用容器的剩余空间,迫使组件到容器的左上角
2 回答
它可能不是一个真正的答案,但无论如何:停止使用GridBagLayout . 它有很多陷阱,使用起来很脆弱,所以请不要使用它 .
使用更好的替代方案,例如MigLayout,并了解这一点 . Don 't bother learning any of Java'是默认的布局管理器,除非你确实需要 .
使用MigLayout的示例:
有几种方法可以做到,你可以先将所有组件添加到另一个容器,然后在容器中布置该容器,但基本原则仍然是......
基本上,这会在最后一行添加一个“隐藏”组件,它想要占用容器的剩余空间,迫使组件到容器的左上角