拜托,我怎样才能自动显示用户在 JComboBox 中选择的一些 JTextField ? 我的例子很简单。我的盒子里有一个 JComboBox,可以进行一些操作。根据用户从此 JComboBox 选择的内容,我会出现一个或多个 JTextField。
我有这个代码:
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
CalculatriceFenetre fenetre = new CalculatriceFenetre();
fenetre.setVisible(true);
}
});
}
.
public class CalculatriceFenetre extends JFrame {
private JTextField field1, field2;
private JComboBox liste;
public CalculatriceFenetre() {
super();
build();
}
private void build() {
setTitle("Calculatrice");
setSize(400, 200);
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(buildContentPane());
}
private JPanel buildContentPane() {
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());
panel.setBackground(Color.white);
field1 = new JTextField();
field1.setColumns(10);
field2 = new JTextField();
field2.setColumns(10);
field2.setVisible(false);
panel.add(field1);
panel.add(field2);
liste = new JComboBox(new OperateursModel());
liste.addActionListener(new CustomActionListener());
panel.add(liste);
return panel;
}
class CustomActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (liste.getSelectedItem().equals("op1")) {
field2.setVisible(true);
}
}
}
.
public class OperateursModel extends DefaultComboBoxModel {
private ArrayList<String> operateurs;
public OperateursModel(){
super();
operateurs = new ArrayList<String>();
operateurs.add("op1");
}
public String getSelectedOperateur(){
return (String)getSelectedItem();
}
@Override
public Object getElementAt(int index) {
return operateurs.get(index);
}
@Override
public int getSize() {
return operateurs.size();
}
@Override
public int getIndexOf(Object element) {
return operateurs.indexOf(element);
}
}
最佳答案
And depending on what the user choose from this JComboBox, I appear one or more JTextField.
然后您可以编写一个 ActionListener
来处理从组合框中选择一个项目。
您可以先阅读 How to Use a Combo Box 上的 Swing 教程部分。一个使用 ActionListener
的工作示例。
在您的情况下,您想向框架添加一个文本字段,因此代码类似于:
JTextField textField = new JTextField(10);
frame.add( textField );
frame.revalidate();
frame.repaint();
此外,您无需创建自定义 ComboBoxModel
。您可以只将项目添加到默认模型。同样,本教程将向您展示如何执行此操作。
关于java - 自动出现 JTextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32103265/