我想製作一種方法來分析String
,並且每當發現文本命令(例如,/r
將文本變成紅色)時,文本命令不會顯示,並且其文本命令應用於命令後面的文本。製作文本命令,如爲文本着色
例如,字符串:
"Hello /rworl/bd"
輸出將是如下:
"Hello world"
但"Hello worl"
將是紅色文本和最終d
將是藍色。我知道如何更改文本顏色,使其變爲粗體等。
什麼是在命令後選擇文本的好方法?
我想製作一種方法來分析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
是純文本的組件。一個單一的字體,樣式&大小,&一個前景和背景顏色可以設置。對於格式化的不可編輯的文本,請使用@Glitch建議的JLabel
。對於可編輯的文本,請使用組件JEditorPane
或JTextPane
。
查看本教程的How to Use Editor Panes and Text Panes部分:進一步的細節,工作代碼.. &可愛的屏幕截圖。 :)
如果您正則表達式不工作,則包括,我們可以給您一個建議。 – Jivings
對不起,JTextArea。 我急於使用正則表達式,所以我首先想到了將字符串轉換爲數組並使用for-loop,但是可能更簡單一些,這就是爲什麼我要在這裏發佈。 –