最近我一直在使用样式常量,样式文档和文本窗格。我知道你可以编辑文本的一部分,你突出显示/选择显示它在下面的代码
StyledDocument doc = this.tpText.getStyledDocument();
Style style = this.tpText.addStyle("stylish", null);
StyleConstants.setForeground(style, color.BLACK);
StyleConstants.setFontFamily(style, "Arial");
doc.setCharacterAttributes(this.tpText.getSelectionStart(), this.tpText.getSelectionEnd() - this.tpText.getSelectionStart(), this.tpText.getStyle("stylish"), true);//This is the piece of code (last line) that will set all the attributes to the highlited text.
例如,如果用户在"hello world"中高亮/选择了"o world",则只有"o world"将被更改为黑色,字体为Arial。
现在,我的问题是:如何从高亮/选中的文本中获得字体字母和颜色?我想知道如何将其保存在单独的变量中(一个用于颜色,另一个用于字体字母)
好的,在做了更多的调查之后,我找到了答案。
doc = this.tpText.getStyledDocument();
Element element = doc.getCharacterElement(this.tpText.getSelectionStart());
AttributeSet as = element.getAttributes();
colour = StyleConstants.getForeground(as);
我看到这个Style Constant方法的唯一缺点是它只识别第一个字符属性,而覆盖/忽略其他字符属性。也许用循环就可以了