請問,我該如何從JComboBox中用戶選擇的內容中自動出現一些JTextField? 我的例子很簡單。我的箱子裏有一個JComboBox,有一些操作。根據用戶從此JComboBox中選擇的內容,我出現一個或多個JTextField。自動出現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);
}
}
爲什麼不只是創建所需的所有JtextField,並且在組合框選擇上,將JTextField的可見性設置爲true/false?除非您需要滿足任意數量的JTextFields,否則這種方法更容易。 – user3437460
這是我做的。我設置了我的JTextField的可見性,但它不起作用 – Mehdi
您是否在代碼中添加了調試語句來驗證ActionEvent是否發生?模型中只有一個元素(爲什麼還在使用自定義模型?),我不確定是否可以重新選擇相同的項目。 – camickr