java jtextarea 事件_JTextArea的事件处理2

[java]代码库import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.undo.*;

import javax.swing.event.*;

import javax.swing.text.*;

public class JTextArea5 extends JFrame implements UndoableEditListener,

DocumentListener {

private UndoableEdit edit;

private JTextArea jta;

private JTextArea message;

private JMenuItem undoitem;

private JMenuItem redoitem;

public JTextArea5() {

super("JTextArea");

jta = new JTextArea();

jta.getDocument().addUndoableEditListener(this);

jta.getDocument().addDocumentListener(this);

message = new JTextArea();

message.setEditable(false);

JPanel p1 = new JPanel();

p1.setLayout(new GridLayout(1, 1));

p1.setBorder(BorderFactory.createTitledBorder("Edit Area"));

p1.add(new JScrollPane(jta));

JPanel p2 = new JPanel();

p2.setLayout(new GridLayout(1, 1));

p2.setBorder(BorderFactory.createTitledBorder("Message"));

p2.add(new JScrollPane(message));

getContentPane().setLayout(new GridLayout(2, 1));

getContentPane().add(p1);

getContentPane().add(p2);

JMenuBar bar = new JMenuBar();

JMenu theMenu = new JMenu("Edit");

undoitem = new JMenuItem("Undo");

redoitem = new JMenuItem("Redo");

theMenu.add(undoitem);

theMenu.add(redoitem);

bar.add(theMenu);

updateMenuItem();

setJMenuBar(bar);

setSize(300, 300);

undoitem.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent ev) {

edit.undo();

updateMenuItem();

message.append("- Undo -\n");

}

});

redoitem.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent ev) {

edit.redo();

updateMenuItem();

message.append("- Redo -\n");

}

});

} // end of JTextArea5

public void undoableEditHappened(UndoableEditEvent ev) {

StringBuffer buf = new StringBuffer(200);

edit = ev.getEdit();

buf.append("undoableEdit:");

buf.append(edit.getPresentationName());

buf.append("\n");

message.append(buf.toString());

updateMenuItem();

}// end of undoableEditHappened()

public void updateMenuItem() {

if (edit != null) {

undoitem.setEnabled(edit.canUndo());

redoitem.setEnabled(edit.canRedo());

undoitem.setText(edit.getUndoPresentationName());

redoitem.setText(edit.getRedoPresentationName());

} else {

undoitem.setEnabled(false);

redoitem.setEnabled(false);

undoitem.setText("Undo");

redoitem.setText("Redo");

}

}// end of updateMenu()

public void showDE(DocumentEvent de) {

StringBuffer debuf = new StringBuffer(100);

debuf.append(de.getType());

debuf.append("Offset:");

debuf.append(de.getOffset());

debuf.append("Length:");

debuf.append(de.getLength());

Element Eroot = jta.getDocument().getDefaultRootElement();

DocumentEvent.ElementChange Echange = de.getChange(Eroot);

if (Echange == null) {

debuf.append("(No Element Change)");

} else {

debuf.append("Element Change:index");

debuf.append("Echange.getIndex()");

}

debuf.append("\n");

message.append(debuf.toString());

}

public void changedUpdate(DocumentEvent de) {

showDE(de);

}

public void insertUpdate(DocumentEvent de) {

showDE(de);

}

public void removeUpdate(DocumentEvent de) {

showDE(de);

}

public static void main(String[] args) {

JFrame f = new JTextArea5();

f.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

f.show();

}

}

694748ed64b9390909c0d88230893790.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值