gpt4 book ai didi

java - ColorPane - 可以抓取不同字符的字符串吗?

转载 作者:行者123 更新时间:2023-12-02 07:07:28 26 4
gpt4 key购买 nike

我目前正在开发一个给我的旧项目,它当前使用 java swing 并有一个基本的 GUI。它有一个 ColorPane,它扩展了 Jtextpane 以更改所选文本的颜色。

它使用这种方法

  public void changeSelectedColor(Color c) {
changeTextAtPosition(c, this.getSelectionStart(), this.getSelectionEnd());
}

说字符串=“Hello World!”你好颜色是绿色世界是黑色的。如何根据 Jtextpane 中的颜色抓取 Hello。我尝试过一种笨拙的方法,即在更改颜色时存储所选单词,但有没有一种方法可以一次性获取所有绿色文本?我尝试过谷歌搜索,但是......它并没有真正想出任何好的方法。谁能指出我正确的方向?

最佳答案

可能有很多方法可以做到这一点,但是......

您需要获取对支持 JTextPaneStyleDocument 的引用,从给定的字符位置开始,您需要检查给定颜色的字符属性,如果 true,则继续到文本字符,否则就完成了。

import java.awt.Color;
import javax.swing.JTextPane;
import javax.swing.text.BadLocationException;
import javax.swing.text.Element;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;

public class Scrape {

public static void main(String[] args) {
JTextPane textPane = new JTextPane();
StyledDocument doc = textPane.getStyledDocument();

Style style = textPane.addStyle("I'm a Style", null);
StyleConstants.setForeground(style, Color.red);

try {
doc.insertString(doc.getLength(), "BLAH ", style);
} catch (BadLocationException ex) {
}

StyleConstants.setForeground(style, Color.blue);

try {
doc.insertString(doc.getLength(), "BLEH", style);
} catch (BadLocationException e) {
}

Color color = null;
int startIndex = 0;
do {
Element element = doc.getCharacterElement(startIndex);
color = doc.getForeground(element.getAttributes());
startIndex++;
} while (!color.equals(Color.RED));
startIndex--;

if (startIndex >= 0) {

int endIndex = startIndex;
do {
Element element = doc.getCharacterElement(endIndex);
color = doc.getForeground(element.getAttributes());
endIndex++;
} while (color.equals(Color.RED));
endIndex--;
if (endIndex > startIndex) {
try {
String text = doc.getText(startIndex, endIndex);
System.out.println("Red text = " + text);
} catch (BadLocationException ex) {
ex.printStackTrace();
}
} else {
System.out.println("Not Found");
}
} else {
System.out.println("Not Found");
}
}
}

这个示例简单地查找第一个红色的单词,但您可以轻松地遍历整个文档并找到您想要的所有单词...

关于java - ColorPane - 可以抓取不同字符的字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15916249/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com