• ベストアンサー

swingでのテキストを選択の認識

swingでメモ帳のようなものを作っているんですが メモ帳などのコピーや切り取りの機能は メニューバーの表示を見ると 文字が選択されて始めてsetEnabled(false)が 解かれて機能するようなっていると 思うのですが、どのようなメソッドを使い 文字が選択されたなどの有無を認識しすればよいでしょうか?? if(editArea.選択を読み取るメソッド) {      //選択されていれば切り取り      editArea.cut(); } else {    //そうでなければメニューバーは項目無効 cutAction.setEnabled(false); } といううようにしたいのですが、 select()を使うのかなと思うのですが。。 どなたかお願いします☆ ------------------------------------------ select(int selectionStart, int selectionEnd) 指定された始点と終点の間にあるテキストを選択します。 ------------------------------------------ のメソッドなど試したのですがうまくいきませんでした 記述の仕方が解かりません。

質問者が選んだベストアンサー

  • ベストアンサー
noname#49664
noname#49664
回答No.2

selectは、テキストを選択するためのメソッドですね。 「テキストが選択されているのかどうか知りたい」ということなら、以下のようなものが使えると思います。 getSelectedText() 選択されているテキストを返します。テキストが空なら選択されていないと考えられます。 getSelectionStart(),getSelectionEnd() 選択されたテキストの開始位置と末尾位置を返します。これで両者が同じならテキストは選択されていないと考えられます。 テキストの選択状態などをリアルタイムに知りたいような場合は、更に、addCaretListenerメソッドで、CaretListenerというイベントリスナーを組み込み、処理するといいでしょう。これはキャレットの位置が変更されるとcaretUpdateメソッドを呼び出します。このへんについてはJavadocのapiを調べてみてください。

nilyannko
質問者

お礼

みなさんありがとうございます!! 2つも使えるメソッドがあったんですね。 勉強になります!!

その他の回答 (1)

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.1

JTextComponent#getSelectionStart()と JTextComponent#getSelectionEnd() の戻り値で判断できると思います。