我想创建一种可以分析 a 的方法,String
并且每当/r
找到文本命令(例如,将文本变为红色)时,不会显示文本命令并将其应用于命令后面的文本。
例如,一个字符串:
"Hello /rworl/bd"
输出如下:
"Hello world"
但"Hello worl"
将是红色文本,最终d
将是蓝色。我知道如何更改文本颜色,使其变为粗体等。
在命令后选择文本的好方法是什么?
我想创建一种可以分析 a 的方法,String
并且每当/r
找到文本命令(例如,将文本变为红色)时,不会显示文本命令并将其应用于命令后面的文本。
例如,一个字符串:
"Hello /rworl/bd"
输出如下:
"Hello world"
但"Hello worl"
将是红色文本,最终d
将是蓝色。我知道如何更改文本颜色,使其变为粗体等。
在命令后选择文本的好方法是什么?
我找不到在 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) {
}
}
JTextArea
是纯文本的组件。可以设置一种字体、样式和大小,以及一种前景色和背景色。对于格式化的不可编辑文本,JLabel
请按照@Glitch 的建议使用 a。对于可编辑的文本,请使用JEditorPane
或之类的组件JTextPane
。
请参阅教程的如何使用编辑器窗格和文本窗格部分:更多详细信息、工作代码..和可爱的屏幕截图。:)