JTextArea text = new JTextArea("");
text.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
ok = true;
}
public void insertUpdate(DocumentEvent e) {
}
public void removeUpdate(DocumentEvent e) {
}
}); 请问 想得到 JTextArea是否更改 怎么使用的?
为什么我这样写 在输入框输入字母后 那个ok好像不会变成 true ?
text.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
ok = true;
}
public void insertUpdate(DocumentEvent e) {
}
public void removeUpdate(DocumentEvent e) {
}
}); 请问 想得到 JTextArea是否更改 怎么使用的?
为什么我这样写 在输入框输入字母后 那个ok好像不会变成 true ?
changedUpdate
给出属性或属性集发生了更改的通知
不是更改了文档会调用这个方法你可以在insertUpdate和removeUpdate都加入ok = true
如果是修改用changedUpdate
如果是删除用removeUpdate
看看用insertUpdate是否是你要的效果
看半天都不懂 但往往前辈们一个简单的回复 就几个字 就能让我明白过来 呵呵
下面是一个示例程序,运行后等待5秒改变属性 触发changedUpdateimport javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;class MyDocument extends DefaultStyledDocument {
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
super.insertString(offs, str, a);
System.out.println("insert str = " + str);
}
}class MyListener implements DocumentListener {
public void changedUpdate(DocumentEvent e) {
System.out.println("update");
}
public void insertUpdate(DocumentEvent e) {
System.out.println("insert");
}
public void removeUpdate(DocumentEvent e) {
System.out.println("remove");
}
}public class Test extends JFrame {
private JTextPane pane;
private MyDocument doc;
private DocumentListener listener;
public Test() {
init();
setSize(100, 100);
getContentPane().add(pane);
}
public void init() {
pane = new JTextPane();
doc = new MyDocument();
listener = new MyListener();
doc.addDocumentListener(listener);
pane.setDocument(doc);
}
public static void main(String[] args) {
Test t = new Test();
t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
t.setVisible(true);
StyledDocument doc = t.pane.getStyledDocument();
try {
StyleContext context = new StyleContext();
Style def = context.getStyle(StyleContext.DEFAULT_STYLE);
doc.insertString(doc.getLength(), "hello", def);
Thread.sleep(5000);
// 5秒后改变属性
System.out.println("care");
Style default_Style = context.addStyle("default", def);
StyleConstants.setFontFamily(default_Style, "Courier New");
StyleConstants.setBold(default_Style, true);
StyleConstants.setFontSize(default_Style, 18);
doc.setCharacterAttributes(0, doc.getLength(), default_Style, true);
}
catch(Exception e) {
}
}
}