jtextpane 看了网上给出的例子都是给个固定的字符,就对这个字符改变颜色。
我想要的是像Editplus那样的查找字符功能,当找到时就将其高亮显示出来。
原来我是用JtextArea组件的,可是当调用其select(begin,end)方法却没有反应、、
所以换成jtextpane ,可以给个例子或实现步骤吗??求大虾们帮忙、、、
我想要的是像Editplus那样的查找字符功能,当找到时就将其高亮显示出来。
原来我是用JtextArea组件的,可是当调用其select(begin,end)方法却没有反应、、
所以换成jtextpane ,可以给个例子或实现步骤吗??求大虾们帮忙、、、
jTextPane1.getHighlighter().addHighlight(0, jTextPane1.getText().length(), DefaultHighlighter.DefaultPainter);
} catch (BadLocationException ble) {
}
String selected = "test";
int start = 0;
int end = 0; if (jTextPane1.getText().contains(selected)) {
start = jTextPane1.getText().indexOf(selected);
end = start + selected.length();
} try {
jTextPane1.getHighlighter().removeAllHighlights();
jTextPane1.getHighlighter().addHighlight(start, end, DefaultHighlighter.DefaultPainter);
} catch (BadLocationException ble) {
}
高亮所有
String selected = "test";
int offset = 0;
jTextPane1.getHighlighter().removeAllHighlights();
String text = jTextPane1.getText().replace("\n", "");
while (text.indexOf(selected, offset) >= 0) {
int start = 0;
int end = 0;
start = text.indexOf(selected, offset);
end = start + selected.length();
offset = end-1;
try {
System.out.println(start);
jTextPane1.getHighlighter().addHighlight(start, end, DefaultHighlighter.DefaultPainter);
} catch (BadLocationException ble) {
}
}
class EleventhPanel extends JPanel {
PrimaryFrame primaryFrame;
private SimpleAttributeSet attribute;
private JTextPane jTextPane;
private StyledDocument styledDocument;
Pattern pt = Pattern.compile("int");//能够匹配正则表达式的内容将会高亮,比如这里的int public EleventhPanel(PrimaryFrame primaryFrame) {
this.primaryFrame = primaryFrame;
init();
} private void init() {
attribute = new SimpleAttributeSet();
jTextPane = new JTextPane();
styledDocument = jTextPane.getStyledDocument();
add(jTextPane);
setBackground(Color.WHITE);
setSize(600, 400);
// setVisible(true);
// add event
StyleConstants.setForeground(attribute, Color.RED);
jTextPane.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent arg0) {
Matcher matcher = pt.matcher(jTextPane.getText());
while (matcher.find()) {
styledDocument.setCharacterAttributes(matcher.start(),
matcher.end() - matcher.start(), attribute, true);
}
}
});
}}// //////////////////////////////////////////////////////////////////////////////////////
public class PrimaryFrame extends JFrame {
EleventhPanel primaryPanel; public PrimaryFrame() {
init();
} /**
* init
*/
private void init() {
setTitle("PrimaryFrame");
setLayout(new BorderLayout());
primaryPanel = new EleventhPanel(this);//
add(primaryPanel);
setPreferredSize(new Dimension(600, 400));
pack();
setVisible(true);
setResizable(false);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}}
视野中,就是我的JTextArea 是放在滚动面板JScrollPane里的,怎么能让高亮部分能随滚动条滚动始终
显示能看见。明白我想要的功能吗?就是类似Editplus里的查询功能,查询到就高亮显示且总在视野中。
求大虾们帮忙啦、、、