java - 如何使用 GridBagConstraints 正确对齐和定位

标签 java swing layout-manager gridbaglayout

我正在尝试如下对齐我的组件:

但目前他们是这样的:

这两个组件位于使用 FlowLayout 的 JPanel 上(构造函数包含 FlowLayout.LEFT)。第一个组件具有以下网格包约束:

GridBagConstraints windowTitleLabelConstraints = new GridBagConstraints();
windowTitleLabelConstraints.anchor = GridBagConstraints.FIRST_LINE_START;
windowTitleLabelConstraints.gridx = 0;
windowTitleLabelConstraints.gridy = 0;

这些是第二个组件的约束:

GridBagConstraints column1Constraints = new GridBagConstraints();
column1Constraints.anchor = GridBagConstraints.LAST_LINE_START;
column1Constraints.gridx = 0;
column1Constraints.gridy = 1;

我尝试将第二个组件的 gridy 设置为 GridBagConstraints.RELATIVE 但没有任何变化。

我也希望这成为可能:

最佳答案

这是一个简单的工作代码,适合您的情况,有 3 个盒子;

        JFrame frame = new JFrame( "Test" );
        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        frame.setSize( 800, 300 );

        JPanel screen = new JPanel( new GridBagLayout() );
        screen.setBackground( Color.WHITE );
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.weightx = 1;
        gbc.weighty = 1;
        gbc.gridheight = 1;
        gbc.gridwidth = 1;
        gbc.fill = GridBagConstraints.BOTH;

        JPanel panel1 = new JPanel();
        panel1.setBackground( Color.RED );
        gbc.anchor = GridBagConstraints.FIRST_LINE_START;
        gbc.gridx = 0;
        gbc.gridy = 0;
        screen.add( panel1, gbc );

        JPanel panel2 = new JPanel();
        gbc.anchor = GridBagConstraints.LAST_LINE_START;
        gbc.gridx = 0;
        gbc.gridy = 1;
        panel2.setBackground( Color.ORANGE );
        screen.add( panel2, gbc );

        JPanel panel3 = new JPanel();
        panel3.setBackground( Color.BLACK );
        gbc.anchor = GridBagConstraints.LAST_LINE_END;
        gbc.gridx = 1;
        gbc.gridy = 1;
        screen.add( panel3, gbc );

        frame.add( screen );
        frame.setVisible( true );

enter image description here

关于java - 如何使用 GridBagConstraints 正确对齐和定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57037601/

相关文章:

Java 基本图形用户界面示例

java - Swing - 布局管理器的问题

java - 在 ArrayList#remove() 中转换 char->Character - 为什么?

java - SWING:无法重置字体上标

java - 如何修复 JScrollPane 内 JEditorPane 的高度?

java - 我正在向某人现有的 Swing 代码添加一个组合框。我在这里做错了什么?

java - 删除最后一行 JTable 的问题

java - 具有模式验证的 JAX-RS

javascript - 以Javascript形式Java创建字节数组

java - 是否允许在 new Boolean(true) 上同步