2017-12-22 22 views
1

PickListでactionListenerを使用すると、キャンセルbtnが期待通りに機能していません。最初は、ピッカーをキャンセルすると、getSelectedStringIndexは-1を返します。最初の1つをクリックしてからOKをクリックすると、インデックス0が与えられます。ここから、キャンセルがクリックされるたびに、インデックス0が返されます。どうすれば修正できますか?ピッカー機能が期待どおりに機能していません

コード:

periodPicker.addActionListener(e -> { 

    String periodString = ""; 
    if (periodPicker.getSelectedStringIndex() == 0) { 
     periodString = "3"; 
    } else if (periodPicker.getSelectedStringIndex() == 1) { 
     periodString = "6"; 
    } 

    if (!periodString.equals("")) { 
     System.out.println("index " + periodPicker.getSelectedStringIndex()); 
    } 
} 

答えて

0

キャンセルがリセットされません。選択してキャンセルをクリックすると、古い選択が返されます。選択値を消去する別のUI要素を追加する必要があります。これは、選択値をnullに設定します。そのUIはネイティブにレンダリングされるため、UI自体に組み込まれることはありません。

+0

ユーザーがピッカーのキャンセルボタンまたはOKボタンをクリックしたかどうかを知るにはどうすればいいですか? – beck

+0

ピッカーから返された値と前の値を比較して、これが解決された場合はピッカーのアクションを無視して解決しました。 –

+0

一般的に、ネイティブ・ピッカーAPIは、キャンセルの場合にはデフォルト値を返すべきですが、 'Display'にあるAPIのみに適用されます。私がしたいことの1つは、純粋なJavaでAndroidスタイルのネイティブ・ピッカーを実装して、人々が適切にカスタマイズしテーマを設定できるようにすることです。残念ながら、それは少しの作業です... –

関連する問題