setBounds 不适用于 Java 中的 TextField

Posted

技术标签:

【中文标题】setBounds 不适用于 Java 中的 TextField【英文标题】:setBounds is not working on TextField in Java 【发布时间】: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 起始位置,因此是第二个 .. .. 会掩盖第一个。 学习如何使用(和组合)布局。 【参考方案1】:

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

【讨论】:

以上是关于setBounds 不适用于 Java 中的 TextField的主要内容,如果未能解决你的问题,请参考以下文章

PreparedStatement 不适用于 Java 中的 Sybase IQ

本地通知适用于 ios 模拟器但不适用于设备

java Codingbat notAlone——为啥它不适用于这个特定的例子

Tomcat 7.0.73 不适用于 java 9

查询适用于 phpMyAdmin,但不适用于 Java [重复]

appView.addJavascriptInterface() 不适用于 API 17