2011-01-01 18 views
1

私はJTextFieldを「金曜日」などの1週間に1日を表します。クリックすると、「月の1日、3か月、または月の最後」などの選択肢が必要です。JavaでJTextFieldをクリックしながらキーを押したまま、キーを取得する方法は?

<>「2」または「L」とし、「金曜日」は月の2番目(または最後)の金曜日を意味します。この場合は、 JTextFieldをマウスでクリックしている間に数値を取得する方法は?

< 2> "金曜日" JTextFieldを右クリックし、メニューをドロップダウンして、ボタンまたはチェックボックスを選択してメニューを閉じ、値を取得します。これまでのところ、このような

私のコードを見て:

private final JTextField[] dayHeadings=new JTextField[]{new JTextField("Su"), 
                  new JTextField("Mo"), 
                  new JTextField("Tu"), 
                  new JTextField("We"), 
                  new JTextField("Th"), 
                  new JTextField("Fr"), 
                  new JTextField("Sa")}; 
...... 

    for (int ii=0; ii < dayHeadings.length; ii++) 
    { 
     dayHeadings[ii].setEditable(false); 
     dayHeadings[ii].setFocusable(false); 
     dayHeadings[ii].addMouseListener(new MouseAdapter() { public void mouseClicked(final MouseEvent evt) { onHeadingClicked(evt); } }); 
     add(dayHeadings[ii],new AbsoluteConstraints(x,38,X_Cell_Size+1,Y_Cell_Size+1)); 
    } 
...... 
    void onHeadingClicked(final java.awt.event.MouseEvent evt) 
    { 
    final javax.swing.JTextField fld=(javax.swing.JTextField) evt.getSource(); 

    ... 
    } 

がどのように上記のいずれかを実行するために、彼らはJavaでなんとかですか?

+0

文法に関するちょっとしたコメントです。 「可能」ではなく「可能」を使用してください。そして、少なくとも「できる」を使う。とても親切にして申し訳ありません。 ;) – HyperNeutrino

答えて

1

オプション1:

ワンステップでこれを行う方法はありません。キーが押されるたびにトラッキングして文字値を保存するには、KeyListnerを追加する必要があります。次に、mousePressedイベントのリスナーにMouseListenerを追加する必要があります。 mousePressedイベントが発生すると、保存されている文字を確認してから処理を行う必要があります。したがって、リスナーはKeyListenerとMouseListenerの両方のインターフェイスを実装します。

オプション2:

あなたはマウスリスナーを追加して、マウスの右クリックをリッスンし、ポップアップメニューを表示する必要があります。

私はオプション2がより直感的で簡単に行えると思います。片手で作業するのは常に簡単ですが、2本の手を使わなければなりません。

+0

はい、ありがとうございます。私はここにいくつかのサンプルコードを見つけました:http://www.roseindia.net/java/example/java/swing/PopUpMenu.shtml – Frank

0

もう1つの方法は、mouseclickイベントでgetModifiers()を使用することです。これは、マウスクリック中にどの修飾キー(ctrl、alt、shiftなど)が押されたかを示します。これらのボタンを使用することは私の意見ではドロップダウンメニューや数字ほど直感的ではありませんが、うまくいく可能性があります。

Read more here

1

getModifiersは私が必要なもの、それは実際にあります。修飾子のサンプルが見つかりました here

関連する問題