Java 在一个ActionListener下添加多个JTextFields?

Java 在一个ActionListener下添加多个JTextFields?,java,swing,jtextfield,Java,Swing,Jtextfield,我正在使用JTextFields、JComboBox和按钮。当我从JComboBox中选择一些信息时,我按下按钮。这将创建一个JTextField。并使用getSelectedItem().toString()方法设置JTextField的文本 我面临的问题是,我想根据用户的意愿“添加”多个JTextFields。所以,如果用户点击按钮3次,我需要3个新的JTextFields。到目前为止,JTextField将被覆盖 public AdjustmentForm() //cons

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

我面临的问题是,我想根据用户的意愿“添加”多个JTextFields。所以,如果用户点击按钮3次,我需要3个新的JTextFields。到目前为止,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);

            }}

    }

在actionlistener中,只需调用container.add(newjtextfield(“Param”)


这将添加多个JTextfields。在那之后,注意你的布局。我已经有一段时间没有使用布局了,所以我不会对此发表评论。

很难从您提供的代码中看出您的问题所在。但是,如果从表面上看,您似乎在重用field1对象,而不是在每次调用actionPerformed时创建一个新的JTextField实例。如果将代码更改为类似于:

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

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

然后他将得到一个重新创建的文本字段,而您不会这样做,因为actionPerformed方法已经有一行代码:add(field1)。无论field1变量维护在何处,创建新textfield并将其添加到容器中的操作都将按预期工作。您可能需要使容器无效。我没试过。