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

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);

     }

    }


MMMHUHU
浏览 204回答 1
1回答

Qyouu

您可以通过revalidate()在设置其文本后从您的侦听器中调用包含 JTextField 的容器来更改 JTextField 的大小,因为这会使您的布局管理器重新布局所保留的组件,但总体而言更好的是使 JTextField 更大开始使用可帮助您设置其列的构造函数。即,改变这个:Atext = new JTextField("Fruit");对此:Atext = new JTextField("Fruit", 25); // or some suitable value或者更好// avoid "magic" numbers by using constants and variablesAtext = new JTextField("Fruit", COLUMNS);  // where COLUMNS is a constant请注意,按照约定,变量名称应以小写字母开头,并且遵循这些约定,其他人将更容易理解您的代码。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java