为了账号安全,请及时绑定邮箱和手机立即绑定

JTextField 仅在窗口大小更改时更新大小

JTextField 仅在窗口大小更改时更新大小

MMMHUHU 2021-12-22 20:15:55
JTextField当我使用ItemListener变量选择复选框时,我已将变量设置为更新文本。虽然文本会更新,但大小不会更新,但只会在我最大化或最小化窗口时更新。你知道为什么会这样吗?这是我的代码:import java.awt.FlowLayout;import java.awt.Font;import java.awt.event.ItemListener;import java.awt.event.ItemEvent;import javax.swing.JFrame;import javax.swing.JCheckBox;import javax.swing.JTextField;class Fruitbox extends JFrame{    private JTextField Atext;    private final JCheckBox Abox;    private final JCheckBox Bbox;    private String currentString;        public Fruitbox()        {            super("Hey you da best");            setLayout(new FlowLayout());            Atext = new JTextField("Fruit");            Abox = new JCheckBox("Apple");            Bbox = new JCheckBox("Banana");            add(Abox);            add(Bbox);            add(Atext);            Trigger t = new Trigger();            Abox.addItemListener(t);            Bbox.addItemListener(t);        }            class Trigger implements ItemListener            {                    @Override                    public void itemStateChanged(ItemEvent e)                    {                    String S = "Fruit";                    if(Abox.isSelected() && Bbox.isSelected())                        S = "Apple and Banana";                    else if(Abox.isSelected())                        S = "Apple";                    else if(Bbox.isSelected())                        S = "Banana";                    else                        S = "Fruit";                    Atext.setText(S);                    }            }    }    class MainFruit    {       public static void main(String[] args)     {        Fruitbox Fruit = new Fruitbox();        Fruit.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        Fruit.setSize(300,300);        Fruit.setVisible(true);     }    }
查看完整描述

1 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

您可以通过revalidate()在设置其文本后从您的侦听器中调用包含 JTextField 的容器来更改 JTextField 的大小,因为这会使您的布局管理器重新布局所保留的组件,但总体而言更好的是使 JTextField 更大开始使用可帮助您设置其列的构造函数。即,改变这个:


Atext = new JTextField("Fruit");

对此:


Atext = new JTextField("Fruit", 25); // or some suitable value

或者更好


// avoid "magic" numbers by using constants and variables

Atext = new JTextField("Fruit", COLUMNS);  // where COLUMNS is a constant

请注意,按照约定,变量名称应以小写字母开头,并且遵循这些约定,其他人将更容易理解您的代码。


查看完整回答
反对 回复 2021-12-22
  • 1 回答
  • 0 关注
  • 203 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号