我想创建一个方法来分析String
,每当找到文本命令(例如/r
将文本变为红色)时,文本命令不会显示,并且应用于命令后的文本。
例如,字符串:
"Hello /rworl/bd"
输出如下:
"Hello world"
但"Hello worl"
为红色文字,最终d
为蓝色。我知道如何更改文本颜色,使其变为粗体等。
在命令后选择文本有什么好方法?
答案 0 :(得分: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) {
}
}
答案 1 :(得分:1)
JTextArea
是纯文本的组件。单一字体,风格和尺寸,&amp;可以设置一个前景色和背景色。对于格式化的不可编辑文本,请使用@Glitch建议的JLabel
。对于可编辑文字,请使用JEditorPane
或JTextPane
等组件。
请参阅教程的How to Use Editor Panes and Text Panes部分:更多详细信息,工作代码..&amp;可爱的屏幕截图。 :)