Java 生成文本命令,例如为文本着色
我想制作一种方法,可以对Java 生成文本命令,例如为文本着色,java,swing,user-interface,text,jtextarea,Java,Swing,User Interface,Text,Jtextarea,我想制作一种方法,可以对字符串进行排序分析,每当找到文本命令(/r,例如,将文本变为红色)时,文本命令不会显示,并应用于命令后面的文本 例如,字符串: "Hello /rworl/bd" 产出如下: "Hello world" 但是“Hello worl”将以红色文本显示,最后的d将以蓝色显示。我知道如何更改文本颜色,使其加粗等 在命令后选择文本的好方法是什么?我找不到在JTextArea上使用多种字体的好方法,但这里它使用的是标签和html。当你输入时,字母将是黑色的。如果按“/”,它将
字符串进行排序分析,每当找到文本命令(/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) {
}
}
公共类TextColour实现KeyListener{
JLabel标签;
字符串红色=”;
字符串蓝色=”;
字符串文本=”;
布尔颜色=假;
公共静态void main(字符串[]args){
新文本颜色();
}
公共文本颜色(){
JFrame=新JFrame();
JTextArea=新的JTextArea();
area.addKeyListener(这个);
label=新的JLabel();
frame.setPreferredSize(新尺寸(400100));
frame.getContentPane().add(区域);
frame.getContentPane().add(标签);
frame.pack();
frame.setVisible(true);
}
@凌驾
按下公共无效键(KeyEvent键){
char letter=key.getKeyChar();
if(颜色){
如果(字母=='r'){
文本+=红色;
}else if(字母=='b'){
文本+=蓝色;
}
颜色=假;
}else if(字母=='/')){
颜色=真;
}否则{
text+=key.getKeyChar();
}
label.setText(“+text+”);
}
@凌驾
公共无效密钥已释放(KeyEvent arg0){
}
@凌驾
public void keyTyped(KeyEvent arg0){
}
}
JTextArea
是纯文本的一个组件。一个单一的字体,样式和大小,以及一个前景和背景颜色可以设置。对于格式化的不可编辑的文本,使用@Glitch建议的JLabel
。对于可编辑的文本,请使用JEditorPane
或JTextPane
等组件
有关更多详细信息、工作代码和可爱的屏幕截图,请参见本教程的部分。:)
如果您的正则表达式不起作用,请将其包括在内,我们可以提供建议。对不起,JTextArea。我很少使用正则表达式,所以我首先考虑将字符串转换为数组并使用for循环,但可能有一种更简单的方法,这就是我在这里发布的原因。