相关疑难解决方法(0)

JTextArea setText()和UndoManager

我正在使用一个UndoManager来捕捉我的变化JTextArea.

setText()然而,该方法删除所有内容,然后粘贴文本.当我撤消时,我首先看到一个空白区域,然后它会显示它之前有哪些文本.

如何重现:

  1. 运行以下代码
  2. 单击setText()按钮
  3. CTRL+Z撤消(你会看到一个空的textarea!)
  4. CTRL+Z撤消(您将看到实际的先前文字)

我想跳过3).

import javax.swing.AbstractAction;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
import javax.swing.event.UndoableEditEvent;
import javax.swing.event.UndoableEditListener;
import javax.swing.text.Document;
import javax.swing.undo.CannotRedoException;
import javax.swing.undo.CannotUndoException;
import javax.swing.undo.UndoManager;

import java.awt.event.ActionEvent;
import javax.swing.JButton;
import java.awt.event.ActionListener;

@SuppressWarnings("serial")
public class JTextComponentSetTextUndoEvent extends JFrame
{
    JTextArea area = new JTextArea();

    public JTextComponentSetTextUndoEvent()
    {
        setSize(300, 300);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        getContentPane().setLayout(null);

        area.setText("Test");
        area.setBounds(0, 96, 146, 165);
        getContentPane().add(area);

        JButton btnSettext = new JButton("setText()");
        btnSettext.addActionListener(new ActionListener()
        {
            public void …
Run Code Online (Sandbox Code Playgroud)

java swing undo-redo jtextarea

3
推荐指数
1
解决办法
2918
查看次数

标签 统计

java ×1

jtextarea ×1

swing ×1

undo-redo ×1