UndoableEditListener - добавление в JLabel и JTextPane

У меня есть панель 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] и добавить текстовую область к каждой из JLabel (которые добавляются в JPanel). Таким образом, это решит проблему UndoableEditListener.

Это кажется логичным? Я был бы очень признателен за более простой подход к этому, все предложения приветствуются :)

У меня просто возникла проблема с добавлением UndoableEditListener к компонентам.

(Я бы предпочел сохранить JLabel, так как мне нужно иметь возможность изменить функцию цвета фона, иначе есть лучший способ ??)

Спасибо.


person greg    schedule 05.10.2012    source источник
comment
Нет смысла добавлять отменяемый прослушиватель к компоненту, который не может редактироваться пользователем (как в случае с JLabel). И вам не нужно придерживаться JLabel, если вы хотите изменить цвет фона   -  person Robin    schedule 05.10.2012


Ответы (1)


Похоже, вам действительно не нужен JLabel. Если вы хотите, чтобы его можно было редактировать (и не изменять), почему бы не использовать JTextField?

Цвет фона JTextField может быть изменен так же, как и JLabel:

JTextField tf = new JTextField();
tf.setColor(Color.RED);
person Roger    schedule 05.10.2012
comment
Я действительно не знаю, почему я не подумал об этом раньше ... Большое спасибо !! - person greg; 05.10.2012