Как создать JTextField для действия JComboBox по требованию пользователя? - PullRequest
0 голосов
/ 02 февраля 2019

Мне нужно динамически создавать элементы управления JTextField из действия JComboBox, где мне нужно получить значение из поля со списком. Как динамически создавать текстовые поля по требованию пользователя?Получение данных из поля со списком. Я пытаюсь этот код, но он не работает. Что нужно изменить в этом коде?

 private void memberSelectionActionPerformed(java.awt.event.ActionEvent evt) {        
        int numberOfMember=Integer.valueOf((String)memberSelection.getSelectedItem());

     Object obj=evt.getSource();
     if(obj==memberSelection){

       UserUpdatePanel.setLayout(new GridLayout(7, 2)); // matrixPanel is the dedicated JPanel
     for(int j=0;j<selectedMember;j++){

          JTextField textField = new JTextField();
          UserUpdatePanel.add(textField);    
}
       this.setContentPane(jPanel1);
       this.pack();
       this.setVisible(true);

     } 
} 

1 Ответ

0 голосов
/ 02 февраля 2019

Попробуйте это:

import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class SwingTest extends JFrame {

    private final JPanel  userUpdatePanel;
    private final JComboBox<Integer> memberSelection;

    public SwingTest()  {
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        memberSelection = new JComboBox<>(new Integer[]{1,2,3,4,19,26});
        memberSelection.addActionListener(e-> memberSelectionActionPerformed());
        add(memberSelection, BorderLayout.PAGE_START);
        userUpdatePanel = new JPanel();
        add(userUpdatePanel);
        pack();
        setVisible(true);
    }

     private void memberSelectionActionPerformed(){
         int numBerOfPanels = (int) memberSelection.getSelectedItem();
         userUpdatePanel.removeAll();
         userUpdatePanel.setLayout(new GridLayout(0,2));
         for(int i =0; i < numBerOfPanels; i++){
              userUpdatePanel.add(new JTextField());
         }
         pack();
     }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(()-> new SwingTest());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...