私は以下のコードに示すJComboBoxを持っています。プログラムが起動すると、actionPerformedイベントがただちに起動し、いくつかのヌルポインタ例外が発生します。そのため、選択した要素のどれもから開始しません。しかし、何らかの理由でそれがうまくいかない(私が何をしても "USD/TRY"を表示することから始まる)。誰もが考えている?頑固なJComboBox
JComboBox comboBox = new JComboBox(new String[]{"USD/TRY", "EUR/TRY", "GBP/TRY"});
comboBox.setSelectedIndex(-1); // doesnt change anything
comboBox.setSelectedIndex(2); // doesnt change anything
comboBox.setSelectedItem(null); // doesnt change anything
UPDATE:
public class MainFrame {
private final JTextArea textArea = new JTextArea();
private IExchangeSource s;
public MainFrame(final IExchangeSource s) {
//build gui
final JComboBox comboBox = new JComboBox();
comboBox.addItem("USD/TRY");
comboBox.addItem("EUR/TRY");
comboBox.addItem("GBP/TRY");
comboBox.setSelectedIndex(-1); // doesnt change anything
//comboBox.setSelectedIndex(2); // doesnt change anything
JFrame f = new JFrame("Currency Converter");
JPanel p = new JPanel(new BorderLayout());
textArea.setName("textarea");
textArea.setWrapStyleWord(true);
textArea.setLineWrap(true);
this.s = s;
comboBox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String exchange = (String) comboBox.getSelectedItem();
s.getData(exchange);
}
});
p.add(comboBox, BorderLayout.NORTH);
p.add(textArea, BorderLayout.CENTER);
f.setPreferredSize(new Dimension(300, 300));
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.add(p);
comboBox.setSelectedIndex(0);
f.setVisible(true);
}
}
JComboBoxの作成後にString []をロードしてみてください。 –
試してみましたが、どちらも問題ありません。/それに応じて質問を更新しました。ありがとう – Cemre
例外のスタックトレースを持つことが役に立ちます。どのようにしてまだ作成されていないコンボボックスにActionListenerを追加できますか? –