如何创建的JTextField JComboBox的由用户需求的行为?

问题描述 投票:0回答:1

我需要动态创建的JTextField从的JComboBox,我需要通过用户需求动态创建的文本字段?就像是用户需要10文本可以通过从获取数据创建10个文本字段得到组合box.How值我的动作控制组合box.I我想这个代码,但并不需要在此代码改变它working.What?

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

     } 
} 
java swing jcombobox
1个回答
0
投票

尝试这个:

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());
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.