在一个ActionListener下添加多个JTextField?

时间:2011-02-28 22:06:59

标签: java swing jtextfield

我正在使用JTextFields,JComboBox和按钮。当我从JComboBox中选择一些信息时,我按下按钮。这会创建一个JTextField。并使用getSelectedItem()。toString()方法设置JTextField的文本。

我面临的问题是我想根据用户的需要“添加”多个JTextField。因此,如果用户单击按钮3次,我需要3个新的JTextField。截至目前,JTextField将被覆盖。

        public AdjustmentForm() //constructor begins, method for embedded main class
        {


        setTitle("Other Therapy Options");
        setSize(620, 400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);

        setLayout(new FlowLayout(FlowLayout.LEFT));


 String[] fluids = { "      ", "Normal Saline", "Albumin", "23.5% NaCl","3% NaCl", "pRBC"}; 
 String[] volume = { "      ", "30", "50", "100", "500", "1000", "other"};

fluidsList = new JComboBox(fluids); 
volumeList = new JComboBox(volume); 

...
...

        thehandler handler = new thehandler();
        button1.addActionListener(handler);
        }

            private class thehandler implements ActionListener{
            public void actionPerformed(ActionEvent event){

            setSize(620, 401);
            field1.setText(" "+fluidsList.getSelectedItem().toString()+", " +volumeList.getSelectedItem().toString() + " ml ");

        add(field1);

            }}

    }

2 个答案:

答案 0 :(得分:0)

在你的actionlistener中只需调用container.add(new JtextField(“Param”));

这将添加多个JTextfields。之后,请关注您的布局。我暂时没有使用布局,所以我不会对此发表评论。

答案 1 :(得分:0)

很难从您提供的代码中找出问题所在。但是,如果我将其视为面值,则表示您正在重用field1对象,而不是在每次调用actionPerformed时创建新的JTextField实例。如果您将代码更改为类似于:

field1 = new JTextField();
field1.setText(...)
...

您的代码应该按预期工作。