1

テキストコマンド(たとえば、テキストを赤くする)が見つかるStringたびに、テキストコマンドが表示されず、コマンドに続くテキストに適用されるように分析するメソッドを作成したいと思います。/r

たとえば、文字列:

"Hello /rworl/bd"

出力は次のようになります。

"Hello world" 

ただし"Hello worl"、赤のテキストで最終的なdものは青で表示されます。テキストの色を変更したり、太字にしたりする方法を知っています。

コマンドの後にテキストを選択する良い方法は何ですか?

4

2 に答える 2

2

JTextAreaで複数のフォントを使用する良い方法を見つけることができませんでしたが、ここではラベルとhtmlを使用しています。入力すると文字は黒になります。'/'を押すと、テキスト文字が色を決定するのを待ちます。次に「r」を押すと、次の文字のフォントが赤に設定され、「b」が青に設定されます。

public class TextColour implements KeyListener {
    JLabel label;
    String red = "<font color='FF0000'>";
    String blue = "<font color='0000FF'>";
    String text = "";
    boolean colour = false;

    public static void main(String[] args) {
        new TextColour();

    }

    public TextColour() {
        JFrame frame = new JFrame();
        JTextArea area = new JTextArea();

        area.addKeyListener(this);
        label = new JLabel();

        frame.setPreferredSize(new Dimension(400, 100));
        frame.getContentPane().add(area);
        frame.getContentPane().add(label);

        frame.pack();
        frame.setVisible(true);
    }

    @Override
    public void keyPressed(KeyEvent key) {
        char letter = key.getKeyChar();
        if (colour) {
            if (letter == 'r') {
                text += red;
            } else if (letter == 'b') {
                text += blue;
            }
            colour = false;
        } else if (letter == '/') {
            colour = true;
        } else {
            text += key.getKeyChar();
        }
        label.setText("<html>" + text + "</html>");
    }

    @Override
    public void keyReleased(KeyEvent arg0) {
    }

    @Override
    public void keyTyped(KeyEvent arg0) {
    }
}
于 2012-05-19T02:10:00.340 に答える
1

JTextAreaプレーンテキストのコンポーネントです。1 つのフォント フェース、スタイルとサイズ、および 1 つの前景色と背景色を設定できます。書式設定された編集不可能なテキストについては、@Glitch の提案に従って a を使用しますJLabel編集可能なテキストには、 または などのコンポーネントを使用しJEditorPaneますJTextPane

チュートリアルの「エディター ペインとテキスト ペインの使用方法」セクションを参照してください: 詳細、作業コード ..& かわいいスクリーンショット。:)

ここに画像の説明を入力

于 2012-05-20T04:52:45.403 に答える