Добавление нескольких JTextFields под одним ActionListener? - PullRequest
0 голосов
/ 01 марта 2011

Я работаю с JTextFields, JComboBox и кнопками.Когда я выбираю какую-то информацию из JComboBox, я нажимаю кнопку.Это создает JTextField.и устанавливает текст JTextField с помощью метода getSelectedItem (). toString ().

Проблема, с которой я сталкиваюсь, заключается в том, что я хочу «добавить» несколько полей JTextField по желанию пользователя.Поэтому, если пользователь нажимает кнопку 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);

            }}

    }

Ответы [ 2 ]

0 голосов
/ 01 марта 2011

Трудно сказать, где ваша проблема, из кода, который вы предоставили.Тем не менее, если я возьму его за чистую монету, похоже, что вы повторно используете объект field1, а не создаете новый экземпляр JTextField при каждом вызове actionPerformed.Если вы измените код на что-то похожее на:

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

, ваш код должен работать как положено.

0 голосов
/ 01 марта 2011

В вашем actionlistener просто вызовите container.add (new JtextField ("Param"));

Это добавит несколько полей JText. После этого позаботьтесь о своем макете. Некоторое время я не работал с макетами, поэтому не буду это комментировать.

...