1

我有一个 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]);                
        }
    }

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

我试过:

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

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

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

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

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

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

谢谢。

4

1 回答 1

2

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

JTextField 和 JLabel 一样可以更改其背景颜色:

JTextField tf = new JTextField();
tf.setColor(Color.RED);
于 2012-10-05T18:00:06.420 回答