我需要动态创建的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);
}
}
尝试这个:
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());
}
}