【发布时间】: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