Форум программистов, компьютерный форум, киберфорум
Java: GUI, Графика
Войти
Регистрация
Восстановить пароль
 
1 / 1 / 0
Регистрация: 03.11.2019
Сообщений: 23
1

События клавиатуры. Не понимаю, как их связать с приложением

25.12.2020, 12:57. Просмотров 2256. Ответов 0

Всем привет
Есть простой интерфейс. в нём нужно отработать события, в том числе, события клавитатуры. Вот с событиями мышки всё понятно - обратился через точку к элементу и поехал...
Вот код:
Java
1
2
3
4
5
6
7
button3.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                if(e.getClickCount() == 2) {
                    JOptionPane.showMessageDialog(panel, "Подвійний клік правою кнопкою миші");
                }
            }
        });
А что делать с событиями клавиатуры? Куда их "привязывать"?
вот код:
Java
1
2
3
4
5
6
7
8
9
public void keyPressed(KeyEvent e) {
JOptionPane.showMessageDialog(null, e.getKeyText(e.getKeyCode()));
    }
    public void keyReleased(KeyEvent e) {
        JOptionPane.showMessageDialog(null, e.getKeyText(e.getKeyCode()));
    }
    public void keyTyped(KeyEvent e) {
        JOptionPane.showMessageDialog(null, e.getKeyText(e.getKeyCode()));
    }
Добавлено через 6 минут
Вот код всей программы:
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package proj8;
 
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.*;
 
public  class TForm1 extends JFrame {
    int width;
    int height;
    TForm1(int w, int h) {
        super("Основне вікно");
        width = w;
        height = h;
        JFrame fr = new JFrame();
        fr.setSize(width, height);
        fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JMenuBar menuBar = new JMenuBar();
        JMenu file = new JMenu("Файл");
        JMenuItem open = new JMenu("Відкрити");
        JMenuItem save = new JMenu("Зберегти");
        JMenuItem close = new JMenu("Закрити");
        JMenu edit = new JMenu("Редагувати");
        JMenuItem copy = new JMenu("Копіювати");
        JMenuItem delete = new JMenu("Видалити");
        JMenuItem insert = new JMenu("Вставити");
        JMenu window = new JMenu("Вікно");
        JMenuItem cascade = new JMenu("Каскадом");
        JMenuItem showAll = new JMenu("Показати все");
        JMenuItem closeAll = new JMenu("Закрити все");
        ImageIcon image = new ImageIcon("image.jpg");
        JLabel label = new JLabel(image);
        label.setPreferredSize(new Dimension(300, 300));
        DefaultTableModel model = new DefaultTableModel(new Object[][]{
                {"1", "Студент1", "ЗІПЗ-19"},
                {"2", "Студент2", "ЗІПЗ-19"},
                {"3", "Студент3", "ЗІПЗ-19"},
                {"4", "Студент4", "ЗІПЗ-19"},
                {"5", "Студент5", "ЗІПЗ-19"}
        }, new Object[]{"Номер", "Прізвище", "Група"});
        JTable table = new JTable(model);
        JScrollPane scrollPane = new JScrollPane(table);
        scrollPane.setPreferredSize(new Dimension(230,300));
        JPanel panel = new JPanel();
        panel.setPreferredSize(new Dimension(70,300));
        JButton button1 = new JButton("Кнопка 1");
        JButton button2 = new JButton("Кнопка 2");
        JButton button3 = new JButton("Кнопка 3");
        JButton button4 = new JButton("Кнопка 4");
        fr.setJMenuBar(menuBar);
        menuBar.add(file);
        file.add(open);
        file.add(save);
        file.add(close);
        menuBar.add(edit);
        edit.add(copy);
        edit.add(delete);
        edit.add(insert);
        menuBar.add(window);
        window.add(cascade);
        window.add(showAll);
        window.add(closeAll);
        fr.add(label);
        fr.setLocationRelativeTo(null);
        fr.add(scrollPane);
        fr.add(panel);
        panel.add(button1);
        panel.add(button2);
        panel.add(button3);
        panel.add(button4);
        fr.getContentPane().add(BorderLayout.WEST,label);
        fr.getContentPane().add(BorderLayout.CENTER, scrollPane);
        fr.getContentPane().add(BorderLayout.EAST, panel);
        fr.setVisible(true);
        button1.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                if(e.getButton() == MouseEvent.BUTTON1) {
                    JOptionPane.showMessageDialog(panel, "Клік лівою кнопкою миші");
                }
            }
        });
        label.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                if(e.getButton() == MouseEvent.BUTTON1) {
                    JOptionPane.showMessageDialog(panel, "Клік лівою кнопкою миші");
                }
            }
        });
        button2.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                if(e.getButton() == MouseEvent.BUTTON3) {
                    JOptionPane.showMessageDialog(panel, "Клік правою кнопкою миші");
                }
            }
        });
        button3.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                if(e.getClickCount() == 2) {
                    JOptionPane.showMessageDialog(panel, "Подвійний клік правою кнопкою миші");
                }
            }
        });
        public void keyPressed(KeyEvent e) {
            JOptionPane.showMessageDialog(null, e.getKeyText(e.getKeyCode()));
        }
        public void keyReleased(KeyEvent e) {
            JOptionPane.showMessageDialog(null, e.getKeyText(e.getKeyCode()));
        }
        public void keyTyped(KeyEvent e) {
            JOptionPane.showMessageDialog(null, e.getKeyText(e.getKeyCode()));
        }
    }
 
}
Добавлено через 1 час 18 минут
Уже разобрался... Нужно было фокусировку установить на окно.... Вот, Гыыы...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.12.2020, 12:57
Ответы с готовыми решениями:

Как связать БД на Oracle с приложением на Java
У меня есть БД на Oracle. Нужно написать приложения на Java, кот. обращалась с запросами к этой БД....

Как опубликовать приложение и связать БД с приложением?
Есть банальное приложение, которое использует БД(Sql Server). Когда я публикую проект...

Как связать веб-узел с windows-приложением?
У меня созданы по отдельности простейшее windows приложение и простейший веб-узел, который должен...

Как связать файл базы данных с приложением!?
Год назад писал прогу на С# и связывал её с базой данных, которую создал в WORKBENCHе. Все...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2020, 12:57

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Не понимаю как базовый класс связать с дочерним
Здравствуйте, не могу разобраться с задачей по С# Создать базовый класс BaseString (простая...

Не понимаю, как связать это между собой максимум и минимум
Пусть А обозначает событие, что средняя температура в Москве равна 12 С, В, что средняя температура...

Как связать события? Events
Здраствуйте. Мне нужно, что при зажатой кнопки мыши и перемещении курсора происходила какое то...

Как связать тип ссылки с приложением, используемым для открытия? (как для телефонов skype))
Как связать тип ссылки с приложением, используемым для открытия? Всем известно, что при нажатии на...

Как отключить запоминание раскладки клавиатуры за конкретным приложением?
Баловался в реестре когда был молодым, теперь не могу найти как исправить асё обратно(( кто поможет?

Не понимаю общего принципа. Как связать AJAX, Timer, UpdatePanel и контролы, в ней находящиеся
Суть такова. Я решил написать никому не нужный корпоративный чат, на примере которого хотел...


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

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

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