Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java GUI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Иван24
0 / 0 / 0
Регистрация: 17.08.2017
Сообщений: 58
1

Современный способ создания горячих клавиш для меню

19.09.2018, 21:19. Просмотров 831. Ответов 14
Метки нет (Все метки)

Здравствуйте. Подскажите, пожалуйста, как правильно добавлять "горячие" клавиши к пунктам меню библиотеки Swing.
Java
1
MyBox.getNewTest().setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK));
Среда разработки IntelliJ IDEA 2018.1 перечёркивает CTRL_MASK как устаревший. Если вместо InputEvent.CTRL_MASK использую Event.CTRL_MASK, то перечёркивается слово Event.
При использовании кода
Java
1
JMenuItem newTest = new JMenuItem("Новый тест", KeyEvent.VK_N)
просто ничего не происходит.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2018, 21:19
Ответы с готовыми решениями:

Правильный способ создания интерфейса
Как я понимаю, все хорошие программисты на java работают в Eclipse. Но по ходу моего изучения...

Реализация горячих клавиш для элементов меню
Подскажите, пожалуйста, как добавить функционал горячих клавиш для элемента Menu? Написать...

Какой способ реализации горячих клавиш лучше?
Прочитал множество топиков на форуме и статей в инете на эту тему, и так и не понял, какой вариант...

Регистрация горячих клавиш для приложения
Доброго времени суток уважаемые! Возник вопрос о регистрации горячих клавиш для приложения. По...

Присваивание горячих клавиш для сторонней программы
Добрый день! Подскажите, пожалуйста, возможно ли средствами VBA распознать кнопки сторонней...

14
korvin_
2163 / 1652 / 320
Регистрация: 28.04.2012
Сообщений: 5,910
19.09.2018, 22:16 2
Иван24, современный способ — не использовать swing и вообще Java для GUI.
0
BuPy7
Нет ТЗ - давай досвидания
741 / 371 / 64
Регистрация: 01.12.2011
Сообщений: 2,250
19.09.2018, 23:54 3
korvin_, а что использовать?
0
Nidl
114 / 27 / 24
Регистрация: 22.02.2017
Сообщений: 209
20.09.2018, 09:25 4
Немного не понятен вопрос, а именно что вам нужно, вы хотите чтобы при нажатии на определенную клавишу срабатывало кнопка в вашем меню ? Или при нажатии кнопки меню срабатывала определенная клавиша ?

Тогда для:
1. Можно сделать слушатель клавиш на JFrame и вызывать любой конструктор;
2. Есть замечательная штука как Robot (благодаря ему я написал шикарнейший виртуальный джойстик для своего сенсорного ПК).
0
korvin_
2163 / 1652 / 320
Регистрация: 28.04.2012
Сообщений: 5,910
20.09.2018, 10:38 5
Лучший ответ Сообщение было отмечено Иван24 как решение

Решение

Цитата Сообщение от BuPy7 Посмотреть сообщение
а что использовать?
Для Windows desktop — C#, для Linux desktop — GTK/Qt, для macOS — Swift+Cocoa. Qt при этом более-менее кросс-платформенен. Есть ещё совсем новомодный Electron (JS).

Цитата Сообщение от Иван24 Посмотреть сообщение
При использовании кода
Java
1
JMenuItem newTest = new JMenuItem("Новый тест", KeyEvent.VK_N)
просто ничего не происходит.
Потому что это ты добавил мнемонику (то, что по Alt работает).

Попробуй так:
Java
1
2
3
JMenuItem newTest = new JMenuItem("Новый тест");
KeyStroke ctrlNKeyStroke = KeyStroke.getKeyStroke("control N");
newTest.setAccelerator(ctrlNKeyStroke);
http://www.java2s.com/Tutorial/Java/...toMenuitem.htm
2
Иван24
0 / 0 / 0
Регистрация: 17.08.2017
Сообщений: 58
20.09.2018, 11:41  [ТС] 6
Nidl,
Цитата Сообщение от Nidl Посмотреть сообщение
чтобы при нажатии на определенную клавишу срабатывало кнопка в вашем меню
Добавлено через 3 минуты
Цитата Сообщение от korvin_ Посмотреть сообщение
Потому что это ты добавил мнемонику (то, что по Alt работает).
korvin_, поясните, пожалуйста.
0
korvin_
2163 / 1652 / 320
Регистрация: 28.04.2012
Сообщений: 5,910
20.09.2018, 12:43 7
Цитата Сообщение от Иван24 Посмотреть сообщение
поясните, пожалуйста.
https://en.wikipedia.org/wiki/Mnemonics_(keyboard)
0
Иван24
0 / 0 / 0
Регистрация: 17.08.2017
Сообщений: 58
20.09.2018, 12:52  [ТС] 8
Вот если бы по-русски было написано...
0
xoraxax
1339 / 1281 / 378
Регистрация: 05.07.2013
Сообщений: 6,134
Завершенные тесты: 1
20.09.2018, 13:29 9
Цитата Сообщение от Иван24 Посмотреть сообщение
Вот если бы по-русски было написано...
https://translate.google.ru/
0
korvin_
2163 / 1652 / 320
Регистрация: 28.04.2012
Сообщений: 5,910
20.09.2018, 13:49 10
Цитата Сообщение от Иван24 Посмотреть сообщение
Вот если бы по-русски было написано...
Там картинка есть
0
Nidl
114 / 27 / 24
Регистрация: 22.02.2017
Сообщений: 209
20.09.2018, 15:28 11
1. Можно сделать слушатель клавиш на JFrame и вызывать любой конструктор;
Java
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
58
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
 
 
 
public class ColorText
{
    public JFrame win = new JFrame();
    
    
    public ColorText()
    {
        makeWindow();
    }
    
    
    private void makeWindow()
    {
        win.setSize(800, 600);
        win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        win.setResizable(false);
        win.setLayout(null);
        win.setLocationRelativeTo(null);
        win.setVisible(true);
        
        win.addKeyListener(new KeyListener()
        {
            @Override
            public void keyPressed(KeyEvent e)
            {
                if (e.isControlDown() && e.getKeyChar() != 'a' && e.getKeyCode() == 65)
                {
                    System.out.println("Ctr+a"); 
                }
            }
 
            @Override
            public void keyReleased(KeyEvent e)
            {
                //
            }
 
            @Override
            public void keyTyped(KeyEvent e)
            {
                //
            }
             
        });
    }
    
 
    public static void main(String[] args)
    {
        new ColorText();
    }
}
а мне JAVA все же нравиться. С С# незнаком сравнить не могу, знаю лишь ненужные AS1-3, и к этому VBA, немного верстки и JavaScript. Для декстопных приложений в Java GUI чувствую себя комфортно )
1
BuPy7
Нет ТЗ - давай досвидания
741 / 371 / 64
Регистрация: 01.12.2011
Сообщений: 2,250
21.09.2018, 02:49 12
Цитата Сообщение от korvin_ Посмотреть сообщение
Для Windows desktop — C#, для Linux desktop — GTK/Qt, для macOS — Swift+Cocoa. Qt при этом более-менее кросс-платформенен. Есть ещё совсем новомодный Electron (JS).
Человек сделал UI (frontend) на одном из вышеперечисленных, что насчет backend?
0
korvin_
2163 / 1652 / 320
Регистрация: 28.04.2012
Сообщений: 5,910
21.09.2018, 11:27 13
Цитата Сообщение от BuPy7 Посмотреть сообщение
Человек сделал UI (frontend) на одном из вышеперечисленных, что насчет backend?
Что ему больше нравится.
0
BuPy7
Нет ТЗ - давай досвидания
741 / 371 / 64
Регистрация: 01.12.2011
Сообщений: 2,250
21.09.2018, 13:41 14
Цитата Сообщение от korvin_ Посмотреть сообщение
Что ему больше нравится.
И что нравиться Вам?
0
korvin_
21.09.2018, 18:29     Современный способ создания горячих клавиш для меню
  #15

Не по теме:

Цитата Сообщение от BuPy7 Посмотреть сообщение
И что нравиться Вам?
Я не пишу кросс-платформенный десктопный софт, слава б-гу. И выбор-то там не большой: либо писать Сишную библиотеку (ну или на C++ с Сишным интерфейсом), либо отдельное сервисное приложение (почти) на чём угодно и общаться с ним по сокету. У обоих вариантов свои плюсы и минусы, выбирал бы в зависимости от объёма работы: для относительно малого — Сишную библиотеку, для большого — отдельное приложение, возможно, на Go.

Как вариант, библиотеку можно ещё на FreePascal'е написать, если от C/C++ воротит, например.

0
21.09.2018, 18:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2018, 18:29
Привет! Вот еще темы с ответами:

Где посмотреть в ubuntu назначения горячих клавиш для работы с терминалом(работаю с xterm)
Здравствуйте, хотелось бы поменять назначения некоторых горячих клавиш в терминале xterm. Где можно...

Как в среде Embarcadero с соучастием горячих клавиш добавлять необходимые для функций библиотеки?
Аналогично среде eclipse для JAVA - там SHIFT + CTRL + O, существует ли вообще для Embarcadero...

Работа с файлами, какой способ сейчас современный?
Есть программа с настройками и базой данных. Задача сохранить/прочитать настройки и данные базы в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru