当前位置: 首页 > 知识库问答 >
问题:

JavaGridBagLayout聚集在一行中

禄豪
2023-03-14

我使用GridBagLayoutJButtonJLabelsJTextFields对齐到登录表单中。但有时所有对象都会塞进一行。(并非总是随机发生,但经常无法忽略)。

这是我调整物体的方法

package test;

import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

public class ManagerMain {
    public static JFrame frame = new JFrame("this is a frame");
    private JLabel loginNameLB = new JLabel("username:");
    private JLabel loginPasswordLB = new JLabel("password:");
    private JTextField loginName = new JTextField();
    private JPasswordField loginPassword = new JPasswordField();
    private JButton loginBTN = new JButton("Login");
    private JButton loginCreateBTN = new JButton("Create An Account");
    private Container login = new Container();
    //login is a container
    public ManagerMain() {
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);


        frame.setLayout(new BorderLayout());
        login.setLayout(new GridBagLayout());
        GridBagConstraints gbc1 = new GridBagConstraints();
        gbc1.insets = new Insets(2, 2, 15, 15);
        gbc1.weightx = 1.0;
        gbc1.weightx = 1.0;
        //user name label
        gbc1.gridx = 0;
        gbc1.gridy = 0;
        gbc1.gridwidth = 1;
        gbc1.gridheight = 1;
        gbc1.fill = GridBagConstraints.VERTICAL;
        gbc1.fill = GridBagConstraints.HORIZONTAL;
        login.add(loginNameLB, gbc1);
        //user name text field
        gbc1.gridx = 1;
        gbc1.gridy = 0;
        gbc1.gridwidth = 2;
        gbc1.gridheight = 1;
        gbc1.fill = GridBagConstraints.VERTICAL;
        gbc1.fill = GridBagConstraints.HORIZONTAL;
        login.add(loginName, gbc1);
        //password label
        gbc1.gridx = 0;
        gbc1.gridy = 1;
        gbc1.gridwidth = 1;
        gbc1.gridheight = 1;
        gbc1.fill = GridBagConstraints.VERTICAL;
        gbc1.fill = GridBagConstraints.HORIZONTAL;
        login.add(loginPasswordLB, gbc1);
        //password text field
        gbc1.gridx = 1;
        gbc1.gridy = 1;
        gbc1.gridwidth = 2;
        gbc1.gridheight = 1;
        gbc1.fill = GridBagConstraints.VERTICAL;
        gbc1.fill = GridBagConstraints.HORIZONTAL;
        login.add(loginPassword, gbc1);
        //login button
        gbc1.gridx = 1;
        gbc1.gridy = 2;
        gbc1.gridwidth = 1;
        gbc1.gridheight = 1;
        gbc1.fill = GridBagConstraints.VERTICAL;
        gbc1.fill = GridBagConstraints.HORIZONTAL;
        login.add(loginBTN, gbc1);
        //create account button
        gbc1.gridx = 2;
        gbc1.gridy = 2;
        gbc1.gridwidth = 1;
        gbc1.gridheight = 1;
        gbc1.fill = GridBagConstraints.VERTICAL;
        gbc1.fill = GridBagConstraints.HORIZONTAL;
        login.add(loginCreateBTN, gbc1);
        frame.add(login, BorderLayout.CENTER);//add container to frame
    }
}

有什么建议吗?它看起来像什么/应该像什么的图像如下

有时它也这样做:

共有1个答案

姬朗
2023-03-14

这是随机发生的,但往往无法忽视。有什么建议吗?

  1. 在将所有组件添加到框架后,您应该调用setViable(...)
  2. 您应该在setViable()...
  3. 之前调用 pack()
  4. 确保在事件调度线程(EDT)上创建了GUI组件
 类似资料:
  • 9.1 一面 (1h) 自我介绍+实习经历 js基本数据类型以及类型判断方法 为什么 typeof null==object以及typeof原理 flex布局以及常见的display有哪些 行内元素与行内块元素 触发回流(reflow)的条件以及改变font-size会发生什么 object与map区别 promise相关以及常见方法 垃圾回收机制以及内存泄露解决方案 浏览器有哪些进程,针对于不同

  • 概述 MongoDB可以执行数据聚合,比如按指定Key分组,计算总数,求不同分组的值。 使用aggregate()方法执行一个基于步骤的聚合操作(类似于Linux管道)。aggregate()接收一个步骤数组成为它的参数,每个步骤描述对数据处理的操作。 db.collection.aggregate( [ <stage1>, <stage2>, ... ] ) 按字段分组并计算总数 使用$grou

  • 我一直在尝试在聚集中添加超时,以避免等待每个流都完成。但是当我添加超时时,它不起作用,因为聚合器等待每个流完成。 E、 在我的流中,其中一个有2秒的延迟,另一个有4秒的延迟 我使用遗嘱执行人。newCachedThreadPool()以并行运行。我想释放包含的每条消息,直到超时完成 我一直在测试的另一种方法是使用默认的gatherer,并在scatterGather中设置GathereTimeou

  • 面试官很好,没有难为我,并且很仔细的介绍了实习工作内容

  • 我手头有多个Neo4j图,比如G1、G2和G3。如何有效地将所有图迁移到一个图中。在图中,G1、G2和G3具有标签G1、G2和G3,并且从不相互连接。 我使用Neo4j 2.3,但3.0也将被考虑。 谢谢 编辑 好的。我实际上使用的是Spring Date Neo4j,它很难连接到多个Neo4j实例。所以我决定把所有的图放到一个实例中,用标签来区分它们。这够清楚了吧?

  • 我试图创建一个新的聚集表< code>db.new_table,它与BigQuery中的现有表< code>db.old_table具有相同的数据和模式。现有表有一个伪列< code>_PARTITIONTIME,我希望新表也有这个< code>_PARTITIONTIME伪列。 我尝试过使用DDL,查询如下: 但是它失败了,因为我们无法使用后跟。如 https://cloud.google.co