Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Hotkey's panel 
V
    Опции темы
PashaOvechkin
Дата 6.2.2009, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 1.4.2007
Где: Riga, Latvia

Репутация: 1
Всего: 4



Привет всем! Необходимо создать удобную сабж панель.
Т.и в JComboBox'e выбираем екшен, который произойдёт по нажатию заданного hotKey, рядом находится JTextField- туда вписывается hotKey.

Тут то и вопрос как создать удобный интерфеис для вводки hotKey...

Хочется сделать так -> 
Допустим нужно продефинировать "Ctrl+ Shift + а"  hotKey.

Когда курсор находится в JTextField, нажимаем и удерживаем Ctrl, в JTextField прописывается "Ctrl".
Всё ещe удерживая Ctrl, нажимаем и удерживаем Shift - в JTextField "Ctrl+Shift"
и так далее... Думаю идея понятна. Но как ето проще имплементировать?


PM MAIL Skype   Вверх
PashaOvechkin
Дата 6.2.2009, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 1.4.2007
Где: Riga, Latvia

Репутация: 1
Всего: 4



Вот что получилось.
Можно в маленькие классы добавить.
Вещ полезная smile

Код


import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JTextField;
import java.awt.event.*;
 


public class HotKeyTest {
 
    private JFrame frame = null;
    private JTextField shortcut=null;
 
    public void test() {
        frame = new JFrame("Test");
        shortcut = new javax.swing.JTextField();
        shortcut.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                shortcutKeyPressed(evt);
            }
            public void keyTyped(java.awt.event.KeyEvent evt) {
                shortcutKeyTyped(evt);
            }
        });
        frame.setLayout(new BorderLayout());
        frame.getContentPane().add(shortcut, BorderLayout.NORTH);
        frame.setSize(
                200, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(
                true);
    }
    
    private void shortcutKeyPressed(java.awt.event.KeyEvent evt) {
        String acceleratorText = "";
        int modifiers = evt.getModifiers();
        int keyCode = evt.getKeyCode();
        if (modifiers == 0) {
            // Handle back space key.
            if (this.shortcut.getText() != null &&
                    !this.shortcut.getText().trim().equals("") && keyCode ==
                    KeyEvent.VK_BACK_SPACE) {
                this.shortcut.setText("");                
                return;
            }
            // If only a character or digit typed, return.
            if (Character.isLetterOrDigit(evt.getKeyChar())) {
                return;
            }
        }
        if (modifiers > 0) {
            acceleratorText = KeyEvent.getKeyModifiersText(modifiers);
            acceleratorText += "+";
        }
        // Determine the display text
        if (!(keyCode == KeyEvent.VK_CONTROL || keyCode == KeyEvent.VK_ALT ||
                keyCode == KeyEvent.VK_SHIFT)) {
            if (keyCode != 0) {
                acceleratorText += KeyEvent.getKeyText(keyCode);
            } else {
                acceleratorText += evt.getKeyChar();
            }
        }
        this.shortcut.setText(acceleratorText);
    }
    
    private void shortcutKeyTyped(java.awt.event.KeyEvent evt) {
        evt.consume();
    }        
 
    public static void main(String args[]) {
        new HotKeyTest().test();
    }
}


PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0399 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.