3

私はJavaスイングとレイアウトを備えた単純なワープロに取り組んでおり、テキストブロック全体を一度に変更するのではなく、個々のテキストブロックを太字、斜体、または異なるフォントサイズにする方法を見つけようとしています. JTextArea.

ユーザーが JTextArea 内のテキストをマウスでハイライトしたときに文字列を初期化する方法はありますか? これをすべて検出し、何でも文字列として簡単に保存できる何らかの種類の ActionListener または JTextArea 用の何かがあれば、私はそれが大好きですが、これが可能かどうかはわかりません。このようなものは素晴らしいでしょう:

String selectedtext;
JTextArea type;

class TextPanel extends JPanel implements ActionListener
{
    public TextPanel()
    {
        type = new JTextArea();
        type.addActionListener(this);
        this.add(type);
    }

    public void actionPerformed(ActionEvent e)
    {
        selectedtext = e.getSelected();
    }
}
4

5 に答える 5

3

JTextArea には、これを行う組み込み機能はありませんが、次のようになります。

誰かがテキストを選択するには、テキスト領域をクリックし、ドラッグしてクリックを離す必要があります。そのため、MouseListener をアタッチし、mouseReleased メソッドを実装して、テキストが選択されているかどうかを確認し、選択されている場合は文字列として保存します。

public void mouseReleased(MouseEvent e) {
    if (textArea.getSelectedText() != null) { // See if they selected something 
        String s = textArea.getSelectedText();
        // Do work with String s
    }
}
于 2013-04-07T05:46:09.987 に答える
1

JTextArea の選択変更を検出するには、CaretListener を使用するとよいでしょう。

jTextArea.addCaretListener(new CaretListener(){
   public void caretUpdate(CaretEvent ce)
   {
        int dot=ce.getDot();
        int mark=ce.getMark();

              if(dot!=mark)
              selectedText=jTextArea.getSelectedText();
              else selectedText=null;
   }
});

ここで、マウスをドラッグしたときに選択したテキストに対して何らかの操作を実行したい場合は、selectedText が更新されるため、それを行うことができます。

于 2013-06-29T14:34:48.803 に答える
1

JTextComponent#setCaretPositionに続いてJTextComponent#moveCaretPositionを使用して、強調表示/選択することができます

于 2013-04-07T07:47:36.543 に答える
-1

JTextArea にはその機能がありません。JEdi​​torPaneを見る必要があり ます

html を表示できるので、太字のタグなど必要なものは何でも使用できます。

于 2013-04-07T05:48:12.053 に答える