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) {
}
}