Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 17.01.2018
Сообщений: 2
1

Ввод данных с клавиатуры или фокус на кнопке

17.01.2018, 14:02. Показов 2325. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Столкнулся с такой интересной проблемой.
Создал оболочку для калькулятора. При вводе цифр с клавиатуры все работает, но стоит мышкой нажать на кнопку, то кнопка выделяется и ввод с клавиатуры отключается, если клавшей Tab про щелкать все кнопки, то выделение слетает и ввод цифр с клавиатуры возобновляется.

Ввод данных с клавиатуры или фокус на кнопке


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
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTextField;
 
public class Panel extends JPanel{
    private  JButton numbers[]=new JButton[10];
    private Font font=new Font("SanSerif", Font.BOLD, 20);
    private JTextField output = new JTextField();
    private JButton backspace = new JButton ("<"),equ=new JButton("=");
    private JButton plus = new JButton("+");
    private JButton minus = new JButton("-");
    private JButton multi = new JButton("*");
    private JButton div = new JButton("/");
    
 
    public Panel(){
        setLayout(null);
// **********************************************************************
        setFocusable(true);
        grabFocus();
// **********************************************************************
        
        
        
        equ.setBounds(130,250,50,50);
        equ.setFont(font);
        add(equ);
        
        backspace.setBounds(10,250,50,50);
        backspace.setFont(font);
        add(backspace);
        
        plus.setBounds(190,70,50,50);
        plus.setFont(font);
        add(plus);
        
        minus.setBounds(190,130,50,50);
        minus.setFont(font);
        add(minus);
        
        multi.setBounds(190,190,50,50);
        multi.setFont(font);
        add(multi);
        
        div.setBounds(190,250,50,50);
        div.setFont(font);
        add(div);
        
        
        numbers[0]=new JButton("0");
        numbers[0].setBounds(70,250,50,50);
        numbers[0].setFont(font);
        add(numbers[0]);
        
        for(int x=0;x<3;x++){
            for(int y=0;y<3;y++){
                numbers[x*3+y+1]=new JButton((x*3+y+1)+"");
                numbers[x*3+y+1].setBounds(x*(50+10)+10,y*(50+10)+70,50,50);
                numbers[x*3+y+1].setFont(font);
                add(numbers[x*3+y+1]);
            }
        }
        output.setBounds(10,10,230,50);
        output.setFont(font);
        output.setEditable(false);
        add(output);
        ActionListener  l=(ActionEvent e)->{
        JButton b =(JButton)e.getSource();
        output.setText(output.getText()+b.getText());
        
    
    };
    for(JButton b: numbers){
        b.addActionListener(l);
    }
// **********************************************************************
    addKeyListener(new KeyAdapter(){
            @Override
            public void keyPressed(KeyEvent e){
               char symbol=e.getKeyChar();
               
               if(!Character.isDigit(symbol))
                   return;
               output.setText(output.getText()+symbol);
            }
    });
    }
// **********************************************************************
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.01.2018, 14:02
Ответы с готовыми решениями:

Как передать фокус командной кнопке клавишей клавиатуры не исполняя кода
При написании программы управления прессом работа мышью- никаких проблем. Требуется продублировать...

Для задания исходной матрицы предусмотреть ввод с клавиатуры или ввод с помощью датчика случайных чисел
Разработать алгоритм и написать программу на языке Turbo Pascal. Задана матрица (двумерный массив)...

Как правильно заменить ввод данных простой на ввод с клавиатуры?
#include &quot;stdafx.h&quot; #include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; int...

Ввод данных в разные Edit по одной кнопке
Приветствую, имеется форма на которой расположены 3 Edit'a, при двойном щелчке(OnDblClick) по всем...

1
0 / 0 / 0
Регистрация: 25.05.2015
Сообщений: 1
04.02.2018, 16:25 2
пропиши для каждой кнопки следующий код:
имя_кнопки.setFocusable(false);
0
04.02.2018, 16:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.02.2018, 16:25
Помогаю со студенческими работами здесь

фокус на кнопке
У меня на форме 2 эдита и 2 кнопки, как сделать что бы при нажатии энтара срабатыввала одна из...

Фокус на кнопке
Добрый день. Есть форма и на ней много кнопок. Нужно сделать так, чтобы после загрузки одна из...

Как запретить фокус на кнопке?
Сабж. Например, в edit вбиваем значение, нажимаем кнопку, но фокус должен остаться на edit.

Отслеживать фокус находящийся на кнопке
Есть 2 кнопки и метка. Первая кнопка закрывает форму. Как сделать чтобы при переключении фокуса...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru