1) add an ItemListener instead of an ActionListener , but this ItemListener always fired SELECTED and DESELECTED events DESELECTED ,
myComboBox.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) {
2) your graphical interface may or may not be created on EventDispashThread , but in this case it does not matter, you should defer this method by wraping in invokeLater (), for example
public class MainFrame { . . . f.setPreferredSize(new Dimension(300, 300)); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.pack(); f.add(p); comboBox.setSelectedIndex(0); f.setVisible(true); selectDesiredItem(); } private void selectDesiredItem() { EventQueue.invokeLater(new Runnable() { @Override public void run() { comboBox.setSelectedIndex(-1); } }); }
3) it would be better to implement AutoCompete JComboBox / JTextField for currency pairs
4) may not matter, but CcyPairs have four sides by default.
Buy BaseCcy
Sell BaseCcy
Buy VariableCcy
Sell VariableCcy
source share