GridBagLayout gridwidth=2 不适用于第二个 JButton

问题描述 投票:0回答:2

我试图让第二个单元格宽度为 2,但一些奇怪的原因 GridBagLayout 使第一个单元格宽度为 2 而不是第二个单元格。我该如何解决? 这是我的代码:

import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import javax.swing.*;
public class LearnGridBagLayout {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setSize(800,600);
        
        JPanel panel = new JPanel();
        GridBagLayout gridbaglayout = new GridBagLayout();
        panel.setLayout(gridbaglayout);
        frame.setContentPane(panel);
        
        JButton button = new JButton("Hello World!");
        GridBagConstraints gridbagconstraints = new GridBagConstraints();
        gridbagconstraints.fill = GridBagConstraints.BOTH;
        gridbagconstraints.weightx = 1;
        gridbagconstraints.weighty = 1;
        gridbagconstraints.gridx = 0;
        gridbagconstraints.gridy = 0;
        gridbagconstraints.gridwidth = 1;
        gridbagconstraints.gridheight = 1;
        panel.add(button,gridbagconstraints);
        
        JButton input = new JButton();
        GridBagConstraints gridbagconstraints2 = new GridBagConstraints();
        gridbagconstraints2.fill = GridBagConstraints.BOTH;
        gridbagconstraints2.weightx = 1;
        gridbagconstraints2.weighty = 1;
        gridbagconstraints2.gridwidth=2;
        gridbagconstraints2.gridheight=1;
        gridbagconstraints2.gridx = 1;
        gridbagconstraints2.gridy=0;
        panel.add(input,gridbagconstraints2);
        
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

我试图让两个单元格填满整个宽度,让第二个单元格的宽度长度为 2。

java gridbaglayout
2个回答
0
投票

我找到了解决方案。权重必须与网格宽度相同。这是我的代码:

import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import javax.swing.*;
public class LearnGridBagLayout {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setSize(800,600);
        
        JPanel panel = new JPanel();
        GridBagLayout gridbaglayout = new GridBagLayout();
        panel.setLayout(gridbaglayout);
        frame.setContentPane(panel);
        
        JButton button = new JButton("Hello World!");
        GridBagConstraints gridbagconstraints = new GridBagConstraints();
        gridbagconstraints.fill = GridBagConstraints.BOTH;
        gridbagconstraints.weightx = 0.25;
        gridbagconstraints.weighty = 1;
        gridbagconstraints.gridx = 0;
        gridbagconstraints.gridy = 0;
        gridbagconstraints.gridwidth = 1;
        gridbagconstraints.gridheight = 1;
        gridbagconstraints.anchor =GridBagConstraints.CENTER;
        panel.add(button,gridbagconstraints);
        
        JButton input = new JButton();
        GridBagConstraints gridbagconstraints2 = new GridBagConstraints();
        gridbagconstraints2.fill = GridBagConstraints.BOTH;
        gridbagconstraints2.weightx = 0.75;
        gridbagconstraints2.weighty = 1;
        gridbagconstraints2.gridwidth=2;
        gridbagconstraints2.gridheight=1;
        gridbagconstraints2.gridx = 1;
        gridbagconstraints2.gridy=0;
        gridbagconstraints2.anchor =GridBagConstraints.CENTER;
        panel.add(input,gridbagconstraints2);
        
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

0
投票

尝试:

gridbagconstraints2.weightx = 2;
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.