如何根据用户需求为JComboBox的动作创建JTextField?
How to create JTextField for the action of JComboBox by demand of user?
我需要从 JComboBox 的动作动态创建 JTextField 控件,我需要从组合中获取值 box.How 以根据用户需求动态创建文本字段?就像用户需要 10 个文本可以创建通过从组合中获取数据的 10 个文本字段 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());
}
}
我需要从 JComboBox 的动作动态创建 JTextField 控件,我需要从组合中获取值 box.How 以根据用户需求动态创建文本字段?就像用户需要 10 个文本可以创建通过从组合中获取数据的 10 个文本字段 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());
}
}