【问题标题】:UndoableEditListener - adding to JLabel and JTextPaneUndoableEditListener - 添加到 JLabel 和 JTextPane
【发布时间】:2012-10-05 17:40:10
【问题描述】:

我有一个 9x9 面板,即panel1[][] 每个面板都有一个 JLabel,所以label1[][]

然后我在 for 循环中将每个标签添加到面板中:

for (int y = 0; y < 9; y++) {
        for (int x = 0; x < 9; x++) {
            label[y][x] = new Grid(x, y);
            panel1[y][x].add(label[y][x]);                
        }
    }

主要目标是能够向每个 JLabel 添加 addUndoableEditListener()。 用户将选择一个数字(int)放置在 JLabel 中,我希望他们能够通过单击撤消/重做按钮来撤消/重做他们的选择。

我试过了:

UndoManager manager = new UndoManager();
label1.addUndoableEditListener(manager);

但是我发现您显然不能将“UndoableEditListener”添加到 JLabels。 (对吧?)

我看到了一些示例,您可以将“UndoableEditListener”添加到 JTextPane,所以我想也许我可以创建一个 JTextPane 窗格 [9][9],并将一个文本窗格添加到每个 JLabels(添加到 JPanel )。这样就解决了 UndoableEditListener 的问题。

这看起来合乎逻辑吗?我真的很感激一个更简单的方法,欢迎所有建议:)

我只是在将 UndoableEditListener 添加到组件时遇到了一些问题。

(我宁愿保留 JLabel,因为我需要能够更改背景颜色功能,否则有更好的方法吗??)

谢谢。

【问题讨论】:

  • 向用户不可编辑的组件添加可撤消的侦听器是没有意义的(JLabel 就是这种情况)。如果你想改变背景颜色,你不需要坚持JLabel

标签: java swing jpanel jlabel undo-redo


【解决方案1】:

看起来您并不真正想要 JLabel。如果您希望它是可编辑的(和可撤消的),为什么不使用 JTextField?

一个 JTextField 可以改变它的背景颜色以及一个 JLabel:

JTextField tf = new JTextField();
tf.setColor(Color.RED);

【讨论】:

  • 我真的不知道为什么我之前没有想到这个......谢谢一堆!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多