Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Горячие клавиши в MVC / 4 сообщений из 4, страница 1 из 1
10.10.2005, 00:22
    #33313810
shiko_1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Горячие клавиши в MVC
Доброго времени,

Есть готовое приложение написанное по шаблону MVC, стоит задача интегрировать в приложение горячие клавиши, для того чтобы пользователь мог обходиться без помощи мышки.

Поделитесь пож-та идеями как это лучше всего сделать. Вопрос не в том как обработать событие нажатия клавиши, а в том, как всё лучше всего организовать . К сожалению, на данный момент не могу более конкретно поставить вопрос, возможно по ходу дисскусии это можно будет сделать.
...
Рейтинг: 0 / 0
10.10.2005, 11:31
    #33314434
Кувалдин Роман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Горячие клавиши в MVC
В JAVA есть такая штука, как Action. Горячая кнопка, описание и иконка в одном флаконе. Не совсем горячие клавиши, но может прокатит:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
 package  com.test;

 import  java.awt.event.*;
 import  javax.swing.*;

 public   class  TestFrame  extends  JFrame
{
    JButton btnTest;

     public  TestFrame()
    {
         try 
        {
            jbInit();
            setVisible(true);
        }
         catch (Exception exception)
        {
            exception.printStackTrace();
        }
    }

     private   void  jbInit()  throws  Exception
    {
        // Определяю действие:
        Action act =  new  AbstractAction()
        {
             public   void  actionPerformed(ActionEvent e)
            {
                doSomething();
            }
        };
        // Назначаю для действия имя
        act.putValue(Action.NAME, "Start");
        // и горячую клавишу
        act.putValue(Action.MNEMONIC_KEY,  new  Integer(( int )'S'));

        // Кнопка
        btnTest =  new  JButton();
        btnTest.setBounds( 10 ,  10 ,  80 ,  25 );
        // Назначаю действие
        btnTest.setAction(act);

        getContentPane().setLayout( null );
        getContentPane().add(btnTest);
    }

     private   void  doSomething()
    {
        JOptionPane.showMessageDialog( new  JFrame(), "Работает");
    }

     public   static   void  main(String[] args)
    {
         new  TestFrame();
    }
}

Мнемоникой назначается одна из букв надписи на кнопке (в данном случае - S)
Вызывается Alt+S;
...
Рейтинг: 0 / 0
10.10.2005, 14:37
    #33315154
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Горячие клавиши в MVC
а при чем здесь MVC?
...
Рейтинг: 0 / 0
13.10.2005, 06:56
    #33321442
shiko_1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Горячие клавиши в MVC
Кувалдин РоманВ JAVA есть такая штука, как Action. Горячая кнопка, описание и иконка в одном флаконе. Не совсем горячие клавиши, но может прокатит:

...

Мнемоникой назначается одна из букв надписи на кнопке (в данном случае - S)
Вызывается Alt+S;

Да действительно в ява есть такое, но мне нужны именно горячие клавиши а не мнемоника, хотя бы потому, что цель сделать горячие клавиши для всего приложения, а быть привязанным к кнопке ALT не очень удобно, да и для того что-бы вызвать действие для подменю, надо перед этим развернуть пункт главного меню. Это очень не удобно...

авторПричём здесь МVC?

Дело в том что мне не надо подсказывать как сделать горячие клавиши ...

JMenuItem save = new JMenuItem("Privet");
save.setAccelerator(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P,
java.awt.Event.CTRL_MASK));

... такое я умею сам.

Мне нужен совет, обсуждение идеи как это лучше организовать в шаблоне MVC ... т.е. сложном по своей структуре кододе.

Например что нужно сделать по пунктам, для того чтобы реализовать горячие клавиши:

1. Каждому возможному компоненту (который может иметь фокус) нужно поставить обработчик события для нажатия клавиши.
2.Обработать произошедшее событие.
а. Отловить на каком компоненте произошло событие.
б. Отловить активную модель.
в. Выполнить требуемые действия для активного компонента и модели.

Далее, как лучше всего отлавливать события ... я думаю надо создать класс слушатель ...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
 public   class  KeyPressedAction  implements  ActionListener, KeyListener {
   public  Component comp;
	
   public  KeyPressedAction(FWViewComp comp) {
  	 this .comp = comp; 
  }

   public   void  keyPressed(KeyEvent e) {
  	System.out.println("keyPressed");	
  }
 
   public   void  actionPerformed(ActionEvent e) {
  	
  	System.out.println("actionPerformed");
  }

  
   public   void  keyReleased(KeyEvent arg0) {
  	System.out.println("keyReleased");
  }
  
   public   void  keyTyped(java.awt.event.KeyEvent e) {
  	System.out.println("keyTyped");
  }  
}


После чего в каждом компоненте надо регестрировать слушателя:

Код: plaintext
1.
2.
3.
    kp =  new  KeyPressedAction( this );
     this .addKeyListener(kp); 


Или есть какие-то другие предложения по поводу того как организовать код для того чтобы он был универсален ???

Может кто-то встречал статьи на эту тему ?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Горячие клавиши в MVC / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]