2010-07-12 2 views
0

Для множественного выбора в Jtree я использую в нем несколько режимов выбора. Это работает. Но я хочу знать, когда я делаю несколько выборок именно в этом дереве, чтобы сделать это, я написал очень простой класс keycontroller который реализует KeyListener, но я хочу проверить, нажата ли CTRL или не делать этого, я использую этот код, но он, кажется, не работает:keycode для ctrl

kc.getKeyCode() == KeyEvent.CTRL_DOWN_MASK ; 

что является KEYCODE для Ctrl? Или я делаю что-то неправильно?

ответ

0

Как CTRL является ключевой маской, нет символов для CTRL только ключа.

Однако, согласно документации KeyEvent, всегда имеется код ключа vaild, который отправляется при нажатии или отпускании клавиши. в этом случае он должен быть KeyEvent.CHAR_UNDEFINED, а getModifiersEx() должен возвращать значение true для CTRL ключ. Обратите внимание, что для его работы вам необходимо зарегистрировать KeyListener (специально для ключей keyPressed() и keyReleased()).

+0

Есть ли способ понять, что я делаю несколько выборов в spesific slection.I означает, что я не хочу потерять предыдущий выбранный элемент, когда я делаю несколько вариантов. – gustavo

1

Код ключа для Ctrl является KeyCode.VK_CONTROL. Для того, чтобы найти, если Ctrl проводится вы можете сделать это:

if ((event.getModifiers() & ActionEvent.CTRL_MASK) ==ActionEvent.CTRL_MASK) { 
System.out.println("CTRL KEY PRESSED"); 
} 

Который использует java.awt.event.ActionEvent вместо java.awt.event.KeyEvent. Поэтому код для Ctrl в ActionEvent is CTRL_MASK.

Надеюсь, это поможет.