【问题标题】:1 component off to the right in GridBagLayoutGridBagLayout 右侧的 1 个组件
【发布时间】:2016-01-02 19:24:37
【问题描述】:

gui 屏幕的问题。登录组件放在一边。

gui 屏幕的分辨率。由于某种原因,不得不将 jtextfield 的 comp 宽度设为 2。

我有一件小事,我不知道是什么原因造成的……我的登录按钮在右侧。我知道这可能是由于 jtextfields 太大然后将第三个单元格放置在它旁边,但是有什么办法可以解决它吗?还是JCheckBox 因为太小而与第三行组件发生冲突?我需要登录按钮以某种方式向右移动,但我认为这是不可能的,因为第 2 个 x 单元格有 2 个 JTextField 组件,占据了所有空间。

        addComp(pLogin, new JLabel("Name: "), 0, 0, 1, 1, GridBagConstraints.LINE_END);
    addComp(pLogin, new JLabel("Password: "), 0, 1, 1, 1, GridBagConstraints.LINE_END);

    //these are going to be formatted fields. Remember johnny remove the new jtextfield soon
    addComp(pLogin, new JTextField(15), 1, 0, 1, 1, GridBagConstraints.LINE_START);
    addComp(pLogin, new JTextField(15), 1, 1, 1, 1, GridBagConstraints.LINE_START);

    addComp(pLogin, remember_User, 0, 2, 1, 1, GridBagConstraints.LINE_END);
    addComp(pLogin, new JLabel("Remember me"), 1, 2, 1, 1, GridBagConstraints.LINE_START);
    addComp(pLogin, login, 2, 2, 1, 1, GridBagConstraints.LINE_START);

    frame.setVisible(true);
}

    private void addComp(JPanel panel, JComponent comp, int xPos, int yPos, int compWidth, int compHeight, int place) {
        GridBagConstraints gbc = new GridBagConstraints();

        gbc.gridx = xPos;
        gbc.gridy = yPos;
        gbc.gridwidth = compWidth;
        gbc.gridheight = compHeight;
        gbc.anchor = place;
        gbc.insets = new Insets(5,5,5,5);

        panel.add(comp, gbc);
    }

【问题讨论】:

  • 1) 源代码中的一个空白行是永远需要的。 { 之后或} 之前的空行通常也是多余的。 2) 为了尽快获得更好的帮助,请发布minimal reproducible exampleShort, Self Contained, Correct Example。 3) 以最小尺寸提供 ASCII 艺术或 GUI 的预期布局的简单绘图,如果可调整大小,则具有更大的宽度和高度。
  • 好的,谢谢,我回家后会这样做的,对不起

标签: java swing jbutton layout-manager gridbaglayout


【解决方案1】:

只需将两个文本字段的宽度更改为 2 而不是 1

addComp(pLogin, new JTextField(15), 1, 0, 2, 1, GridBagConstraints.LINE_START);
addComp(pLogin, new JTextField(15), 1, 1, 2, 1, GridBagConstraints.LINE_START);

【讨论】:

  • 感谢这确实有效,但效果如何?我不确定如何更改宽度使登录按钮能够转到它的实际位置?
  • 底行有 3 列(复选框、标签、按钮),但第一行和第二行有 2 列(标签和文本字段)。所以我们让文本字段占据 2 列
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-17
  • 2021-08-28
  • 2011-12-15
  • 2012-06-24
  • 1970-01-01
  • 2020-03-29
相关资源
最近更新 更多