【问题标题】:setBounds is not working on TextField in JavasetBounds 不适用于 Java 中的 TextField
【发布时间】:2021-09-28 03:26:51
【问题描述】:

我想在面板中添加两个文本字段。面板的布局是网格布局。 我为文本字段的高度和宽度添加了 setBounds,但 setBounds 无法正常工作。 这是我的代码...

  import java.awt.*;
  import javax.swing.*;
  class gui1
    {
        public static void main(String[] args)
        {
            JFrame frm = new JFrame();
            JPanel pan = new JPanel();
            Button btn = new Button("SUBMIT");
            
            TextField txt1 = new TextField();
            TextField txt2 = new TextField();
            Label lbl = new Label("LOGIN FORM");
            
            txt1.setBounds(20,20,100,200);
            txt2.setBounds(20,20,200,300);
            frm.setLayout(new BorderLayout());
            pan.setLayout(new GridLayout(1,2));
            pan.add(txt1);
            pan.add(txt2);
            frm.add(pan,BorderLayout.CENTER);
            frm.add(lbl,BorderLayout.NORTH);
            frm.setSize(800,500);
            
            frm.setVisible(true);
            frm.setDefaultCloseOperation(frm.EXIT_ON_CLOSE);
       }
    }

【问题讨论】:

  • 布局管理器可以计算边界,因此不需要手动设置边界。添加所需布局的草图。
  • 我如何设置文本字段的大小
  • 首先,不要混合使用 Swing 和 AWT 组件。使用所有 Swing。 “我如何设置文本字段的大小”,最简单的方法是通过接受多个列的构造函数。引用的大小将被使用的Font 大小进一步改变。 一般提示: 1) 将frm.setSize(800,500); frm.setVisible(true);(第一行是猜测,总是错误的)更改为frm.pack(); frm.setVisible(true);。 2) 以最小尺寸提供 ASCII 艺术或 GUI 的 预期 布局的简单绘图,如果可调整大小,则具有更大的宽度和高度 - 以显示应如何使用额外空间。 ..
  • .. 3) Java GUI 必须在不同的语言环境中使用不同的 PLAF 在不同的操作系统、屏幕尺寸、屏幕分辨率等上工作。因此,它们不利于像素完美布局。而是使用布局管理器,或combinations of them 以及white space 的布局填充和边框。 4) 在txt1.setBounds(20,20,100,200); txt2.setBounds(20,20,200,300); 中可以看到避免尝试设置组件边界的(许多)原​​因之一 - 它们具有相同的 x,y 起始位置,因此是第二个 ..
  • .. 会掩盖第一个。 学习如何使用(和组合)布局。

标签: java swing user-interface awt


【解决方案1】:

布局管理器将根据管理器重置或忽略手动设置的值。不要手动设置 UI 边界/大小。我们有布局管理器是有原因的;使用它们。作为一般规则,如果您将布局放在其他布局中,那么您做错了。你可以通过使用不同的经理来做你想做的事。我建议使用 GridBagLayout。使用起来有点复杂,但从长远来看,你会得到更好的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 2012-07-31
    • 1970-01-01
    相关资源
    最近更新 更多