Java 网格布局定位

Java 网格布局定位,java,swing,gridbaglayout,Java,Swing,Gridbaglayout,我对GridBagLayout的定位有问题: 我试图在中间(顶部)放置一个标签,但由于我的代码(原因我没有看到),我有以下几点: 我希望标签测试在我的窗口顶部和中间。有人能给我解释一下这个坏位置的原因吗 我的节目: public class Accueil extends JFrame { private JPanel home = new JPanel(); private GridBagConstraints grille = new GridBagConstraints

我对GridBagLayout的定位有问题: 我试图在中间(顶部)放置一个标签,但由于我的代码(原因我没有看到),我有以下几点:

我希望标签测试在我的窗口顶部和中间。有人能给我解释一下这个坏位置的原因吗

我的节目:

public class Accueil extends JFrame {

    private JPanel home = new JPanel();
    private GridBagConstraints grille = new GridBagConstraints();
    private JLabel title = new JLabel("Test");

    public Accueil() {
        home.setLayout(new GridLayout());
        init_grille();
        init_title();

        this.add(home);
        this.setSize(600,600);
        this.setTitle("Test One");
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);

    }

    private void init_grille() { 
        grille.fill = GridBagConstraints.BOTH;
        grille.weightx = 2;
        grille.weighty = 5;
        grille.ipady=grille.anchor=GridBagConstraints.CENTER;;

    }

    private void init_title() {
        grille.fill = GridBagConstraints.HORIZONTAL;
        grille.gridx = 0;
        grille.gridy = 0;
        home.add(title,grille);
    }

    public static void main(String [] args) {
        new Accueil();
    }
}
这无助于:

home.setLayout(new GridLayout());
您可能想要:

home.setLayout(new GridBagLayout());
此外,这些变化应该有效:

private void init_title() {
      grille.fill = GridBagConstraints.NONE;
      grille.gridx = 0;
      grille.gridy = 0;
      grille.anchor = GridBagConstraints.NORTH;
      home.add(title,grille);
  }
这无助于:

home.setLayout(new GridLayout());
您可能想要:

home.setLayout(new GridBagLayout());
此外,这些变化应该有效:

private void init_title() {
      grille.fill = GridBagConstraints.NONE;
      grille.gridx = 0;
      grille.gridy = 0;
      grille.anchor = GridBagConstraints.NORTH;
      home.add(title,grille);
  }

您使用的不是GridBagLayout,而是GridBagLayout。如果您打算使用GridBagLayout,您需要更改标记您不是使用GridBagLayout,而是使用GridBagLayout。如果您打算使用GridBagLayout,您需要在GridBagLayout和GridBagLayout之间更改标记,哪一个是“最佳”?我的意思是“最好”在不同的元素的位置上,它们不是最好的。当您需要一个简单的网格时,GridLayout最适合并且更易于使用。当你需要更复杂的东西时,GridLayout做不到,GridBagLayout也可以,但代价是更高的复杂性。因为我们不知道你的最终目标是什么组件,或者你想把它们放在哪里,建议首选的布局经理只是猜测。+1但是(我反对把简单的事情复杂化)OPs
我试着把它们放在中间(顶部)一个标签,但是
谈论SwingConstants.CENTER或JLabel.CENTER,而不是在这种情况下打扰LayoutManager,也不知道XXX布局是否比其他更好谢谢大家的回答。这对我帮助很大:)在GridBagLayout和GridLayout之间,哪一个是“最好的”?我的意思是“最好”在不同的元素的位置上,它们不是最好的。当您需要一个简单的网格时,GridLayout最适合并且更易于使用。当你需要更复杂的东西时,GridLayout做不到,GridBagLayout也可以,但代价是更高的复杂性。因为我们不知道你的最终目标是什么组件,或者你想把它们放在哪里,建议首选的布局经理只是猜测。+1但是(我反对把简单的事情复杂化)OPs
我试着把它们放在中间(顶部)一个标签,但是
谈论SwingConstants.CENTER或JLabel.CENTER,而不是在这种情况下打扰LayoutManager,也不知道XXX布局是否比其他更好谢谢大家的回答。这对我帮助很大:)