2012-10-05 31 views
1

我有一個9x9的面板,它是panel1[][] 每個面板具有一個JLabel,所以label1[][]UndoableEditListener該 - 增加的JLabel和的JTextPane

和我每個標籤添加到面板在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); 

但是我看到apprently不能添加 「UndoableEditListener該」 來的JLabel。 (對吧?)

我看到了一些例子,你可以添加「UndoableEditListener」到JTextPane,所以我雖然也許我可以創建一個JTextPane窗格[9] [9],併爲每個JLabel添加一個文本窗格被添加到JPanel中)。所以這將解決UndoableEditListener的問題。

這是否合乎邏輯?我真的很感激這個更簡單的方法,所有的建議歡迎:)

我只是有一些問題與組件添加UndoableEditListener。

(我寧願保持的JLabel,因爲我需要能夠改變背景色的功能,否則是沒有更好的方法?)

感謝。

+2

它沒有意義的,可撤消監聽器添加到這是不可編輯由用戶(這是的情況下的部件對於'JLabel')。如果你想改變背景顏色,你不需要堅持'JLabel' – Robin

回答

2

看起來你並不是真的想要JLabel。如果您希望它是可編輯的(並且可撤消),爲什麼不使用JTextField?

一個JTextField可以有它的背景色改變,以及一個JLabel:

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

我真的不知道爲什麼我沒有想到這之前...謝謝一堆! – greg

+0

因此,請將此標記爲正確答案 – Roger