0

このプログラムでは、ユーザーがテキストフィールドにコマンドを入力すると、入力したものがテキスト領域に表示されます。yes などのキーワードの場合は緑色に変わりますが、テキスト エリアに 1 行のテキストだけを緑色に設定することはできないため、テキスト ペインを使用する必要があります。

問題は、テキスト ペインを使用すると追加メソッドを使用できなくなることです。

private final static String newline = "\n";
private void enterPressed(java.awt.event.KeyEvent evt) {                                      
    int key = evt.getKeyCode();
    if (key == KeyEvent.VK_ENTER)
    {
       String textfieldEnterdValue = textfield1.getText().toString();
       this.TextArea1.append("> "+tb1EnterdValue+newline);
       this.tb1.setText("");
       if((tb1EnterdValue.equals("yes")) )
        {
            TextArea1.setForeground(Color.green);
        }
    }
4

2 に答える 2

1

JTextPaneDocumentをモデルとして使用します。これは、複数の色とフォントの使用をサポートするために必要です。
したがって、JTextPane に追加するには、Document を変更する必要があります。
次の方法が利用可能です。

insertString(int pos, String value, AttributeSet att)
remove(int pos, int length)

たとえば、これはvalueドキュメントの末尾に追加されます。

Document d = textPane.getDocument();
d.insertString(d.getLength(), value, null);

さらに、新しく追加された行が画面上にあることを確認するために、 modelToView(int)の結果でscrollRectToVisible(Rectangle)を呼び出すことができます。

于 2011-01-19T15:10:33.147 に答える
0

基になるドキュメントで直接それを行う必要があると思います。

このようなもの:

文字列値=textfield1.getText(); //ここではtoString()は必要ありません!
textPane.getDocument()。insertString(textPane.getCaretPosition()、value、null);
于 2011-01-16T17:03:14.060 に答える