подскажите по java
Есть класс, в классе меню, сделанное с помощью JFrame.
Нужно добавить шорт-кат. Использовать акселлератор. Долго смотрю на документацию Оракла и не могу понять до конца класс KeyStroke. Просто скопированный код с самоучителя не предлагать (уже смотрела).
Вот так выглядит ДжейМенюИтем, куда хочу добавить шорт-кат.
....
JMenuItem textAusgeben = new JMenuItem("Text Strg+t");
menuDatei.add(textAusgeben);
.....
textAusgeben.setAccelerator(KeyStroke ......);
...
При щелчке по ДжейМенюИтем - вывод текста на косоль. Тот же вывод текста на консоль должен происходить по шорт-кату Strg+t.
Как я понимаю, я вызываю Метод .setAccelerator () из класса ДжейМенюИтем. В Метод передаю как Параментр KeyStroke переменную.
А класс KeyStroke я как раз не понимаю. Вижу,что в нем много методов getKeyStroke(....).
Есть класс, в классе меню, сделанное с помощью JFrame.
Нужно добавить шорт-кат. Использовать акселлератор. Долго смотрю на документацию Оракла и не могу понять до конца класс KeyStroke. Просто скопированный код с самоучителя не предлагать (уже смотрела).
Вот так выглядит ДжейМенюИтем, куда хочу добавить шорт-кат.
....
JMenuItem textAusgeben = new JMenuItem("Text Strg+t");
menuDatei.add(textAusgeben);
.....
textAusgeben.setAccelerator(KeyStroke ......);
...
При щелчке по ДжейМенюИтем - вывод текста на косоль. Тот же вывод текста на консоль должен происходить по шорт-кату Strg+t.
Как я понимаю, я вызываю Метод .setAccelerator () из класса ДжейМенюИтем. В Метод передаю как Параментр KeyStroke переменную.
А класс KeyStroke я как раз не понимаю. Вижу,что в нем много методов getKeyStroke(....).
-
-
14.07.2015 в 17:27textAusgeben.setAccelerator(KeyStroke.getKeyStroke('E',InputEvent.ALT_DOWN_MASK));
Но не скажу, чтобы сильно поняла (
-
-
14.07.2015 в 17:35В частности не совсем поняла. JMenu это субкласс JMenuItem. То есть ДжейМенюИтем это суперкласс? Тогда не очень понимаю строчку
...
JMenu menuDatei = new JMenu ("Datei");
....
JMenuItem textAusgeben = new JMenuItem("Text Alt+E");
menuDatei.add(textAusgeben);
...
Мы создаем переменную класс ДжейМеню. И мы зовем из нее метод .add. То есть мы зовем метод из субкласса и передаем в него объект суперкласса?
Разве так можно?
Я видела обратную запись. Когда суперкласс.названиеМетода (субкласс переменная).
-
-
15.07.2015 в 01:02Собственно, вот: http://docs.oracle.com/javase/7/docs/api/javax/swing/JMenu.html#add(javax.swing.JMenuItem)
А ещё есть метод с таким же названием, но принимающий String. И ещё несколько вариантов.
-
-
15.07.2015 в 12:45И все равно не понимаю.... Как бы.... в более мелкий субкласс в качетсве метода передаем больший класс? Самой логики не понимаю.
-
-
16.07.2015 в 00:22Только не в качестве метода, а в качестве аргумента (параметра) метода.
Ну... Некоторая логика в этом есть. И то и другое — кнопки (JAbstractButton). Причём, JMenu (меню) это такой JMenuItem (элемент меню), который при клике раскрывает список других JMenuItem'ов. А, например, панель меню это уже не кнопка и вообще вынесена в отдельный класс JMenuBar, который не наследуется ни от того, ни от другого.
Во всяком случае, так я понял всю эту конструкцию.