1

panel1[][] 各パネルに JLabelがある 9x9 パネルがあるので、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]);                
        }
    }

主な目標は、これらの JLabels のそれぞれに addUndoableEditListener() を追加できるようにすることです。ユーザーは、JLabel に配置する数値 (int) を選択します。元に戻す/やり直しボタンをクリックして、選択を元に戻したりやり直したりできるようにしたいと考えています。

私は試した:

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

ただし、どうやら「UndoableEditListener」を JLabels に追加できないことがわかりました。(右?)

「UndoableEditListener」を JTextPane に追加できる例をいくつか見たので、JTextPane ペイン [9][9] を作成し、(JPanel に追加された) JLabels のそれぞれにテキストペインを追加することができるかもしれません。したがって、これは 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 に答える