2016-09-30 23 views
2

私はこの基本的なポストのために申し訳ありません、新しい学習OOPです。私はJComboBoxで選択した項目の値を取得しようとしているときに、なぜnullを返すのかわかりません。getSelectedItemがnullを返すのはなぜですか?

public class AddEmployee extends javax.swing.JInternalFrame{ 
    public AddEmployee() 
    { 
    initComponents(); 
    this.setSize(1100,500); 
    setMonths(); 
    setJComboBoxProperties(); 
    check(); 
    } 

    private void setMonths() 
    { 
     String[] monthsObj = {"January", "February", "March", "April", "May", "June", "July", 
    "August", "September", "October", "November", "December"}; 

     DefaultComboBoxModel monthsModel = new DefaultComboBoxModel(monthsObj); 

     cbMonths.setModel((ComboBoxModel)monthsModel); 

    } 

    private void setJComboBoxProperties() 
    { 
     cbMonths.setSelectedIndex(-1); 
    } 

    private String check() 
    { 
     String cb = (String)cbMonths.getSelectedItem(); 
     System.out.println(cb); 
     return cb; 
    } 

} 

私はString cbをキャストするので、それは私にnullを与えません。しかし、私は選択した項目をチェックアウトしようとしているが、それは私にnullを与える。

+3

ここで、cbMonthは宣言されていますか? 1つのエントリが選択されていますか? – Jens

+0

@Jens Btwこれはドラッグアンドドロップです。だから私は 'JComboBox'のインスタンスを作成しなかったのです:) –

+0

ドラッグアンドドロップ? cbMounthを宣言する必要があります。 – Jens

答えて

2

Comboboxの初期化後にsetSelectedItemを呼び出してください。 documentationを参照してください。

DefaultComboBoxModel monthsModel = new DefaultComboBoxModel(monthsObj); 
    monthsModel.setSelectedItem('September'); 
+0

いいえ。ユーザーがドロップダウン内のどの項目を選択したかを確認しようとしています。 –

+2

@ JohnFrancis nullを取得した場合、ユーザーはエントリを選択しません。コンボボックスの値を指定したドキュメント、または選択しない場合はnullを参照してください。 – Jens

+0

'getSelectedIndex()'をチェックしてください。選択されていなければ '-1'を返します。 – dit

2

cbMonths.setSelectedIndex(-1);と呼んでいます。これにより、documentationのように、項目(null)が選択項目として設定されません。

ユーザが選択を変更するまで、getSelectedItem()は常にnullを返します。これは文書化された正しい動作です。

+0

'setSelectedIndex(-1);'を削除しようとしましたが、最初の要素は1月ですか?それは常に最初の要素を出力しますが、他の要素を選択すると何も印刷しません。これをどうすれば解決できますか? –

+0

ユーザーが選択を変更したときにトリガーされたActionEventに反応するリスナーを追加する必要があります。この質問を参照してください:http://stackoverflow.com/questions/58939/jcombobox-selection-change-listener – megaflop

+0

最初私はリスナーを使用するつもりはないと思った。これは実際にJComboBoxの動作ですか?ただ質問:D –

関連する問題