Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java: GUI, Графика
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Kuroobi
2 / 2 / 0
Регистрация: 09.10.2013
Сообщений: 48
1

Кнопка JButton работает, но не дублируется нажатием клавиши Enter. Найти ошибку

09.03.2014, 23:41. Просмотров 880. Ответов 5
Метки нет (Все метки)

Здравствуйте! Есть программа:
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
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
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.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
 
 
public class Zvet {
    MyKeyAdapter mu=new MyKeyAdapter();
    static JTextField t3=new JTextField(3), t1=new JTextField(3), t2=new JTextField(3);
    static JLabel l1=new JLabel("R="),l2=new JLabel("G="),l3=new JLabel("B=");
    static JButton b1=new JButton(), b2=new JButton("в€љ");
    static String r,g,b;static int rr=0;
    static int gg=0;
    static int bb=0;
    public static void main(String[] args) {
        JFrame j=new JFrame("Цвет");
        j.setVisible(true);JPanel jp=new JPanel();
        j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        j.setSize(300, 340);
        j.setLocationRelativeTo(null);
        jp.setLayout(new FlowLayout());
        b1.setBorderPainted(false);j.add(jp);
        jp.add(b1);jp.add(l1);jp.add(t1);jp.add(l2);jp.add(t2);jp.add(l3);jp.add(t3);jp.add(b2);
        b2.setFont(new Font("Calibri", Font.ITALIC,15)); b2.setPreferredSize(new Dimension(41,20));
        b1.setBackground(Color.white);b1.setPreferredSize(new Dimension(270, 270));b1.setEnabled(false);
        t1.setHorizontalAlignment(SwingConstants.RIGHT);t1.setText("0");
        t2.setHorizontalAlignment(SwingConstants.RIGHT);t2.setText("0");jp.setFocusable(true);
        t3.setHorizontalAlignment(SwingConstants.RIGHT);t3.setText("0");j.setFocusable(true);
        b2.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                r=t1.getText(); g=t2.getText();b=t3.getText();
                try{if(Double.parseDouble(r)<0||Double.parseDouble(r)>255||Double.parseDouble(r)-(int)Double.parseDouble(r)!=0||
                        Double.parseDouble(g)<0||Double.parseDouble(g)>255||Double.parseDouble(g)-(int)Double.parseDouble(g)!=0||
                                Double.parseDouble(b)<0||Double.parseDouble(b)>255||Double.parseDouble(b)-(int)Double.parseDouble(b)!=0){
                    JOptionPane.showMessageDialog(null, "Числа в полях холжны быть целыми от 0 до 255!");
                }else{rr=Integer.parseInt(t1.getText());
                gg=Integer.parseInt(t2.getText());
                bb=Integer.parseInt(t3.getText());
                b1.setBackground(new Color(rr,gg,bb));
            }}catch(Exception adsds){JOptionPane.showMessageDialog(null, "Вводите числа!");}}
        });
    }
    public class MyKeyAdapter extends KeyAdapter{
        public void KeyPressed(KeyEvent e){
            int key=e.getKeyCode();
            if(key==KeyEvent.VK_ENTER){System.out.println("<kf");
                r=t1.getText(); g=t2.getText();b=t3.getText();
                try{if(Double.parseDouble(r)<0||Double.parseDouble(r)>255||Double.parseDouble(r)-(int)Double.parseDouble(r)!=0||
                        Double.parseDouble(g)<0||Double.parseDouble(g)>255||Double.parseDouble(g)-(int)Double.parseDouble(g)!=0||
                                Double.parseDouble(b)<0||Double.parseDouble(b)>255||Double.parseDouble(b)-(int)Double.parseDouble(b)!=0){
                    JOptionPane.showMessageDialog(null, "Числа в полях холжны быть целыми от 0 до 255!");
                }else{rr=Integer.parseInt(t1.getText());
                gg=Integer.parseInt(t2.getText());
                bb=Integer.parseInt(t3.getText());
                b1.setBackground(new Color(rr,gg,bb));
            }}catch(Exception adsds){JOptionPane.showMessageDialog(null, "Вводите числа!");}
            }
        }
    }
}
она берет три числа на RGB, показывает цвет. Для этого есть кнопка (b2) и можно нажать на клавишу ENTER, должно выполниться то же самое. Но кнопка работает, клавиша -нет. Для проверки поставил на вывод знаки, чтобы проверить работу. Ничего даже не выводиться. Помогите, пожалуйста!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2014, 23:41
Ответы с готовыми решениями:

Нужно закончить ввод последовательности чисел нажатием клавиши ENTER
В общем есть цикл for, в нем мы вводим последовательно числа. char a; int i; For (i=0; i&lt;9;...

Нажатием клавиши Enter осуществить движение введенного символа по кругу
Создать программу: Ввести произвольный символ в центре экрана. Нажатием клавиши Enter осуществить...

Закрыть MessageBox нажатием клавиши Enter без передачи нажатия приложению
На форме есть кнопка. При нажатие на нее открывается МеssageBox.Show... Так же при нажатие Enter...

Нажатием клавиши Enter осуществить движение строки по диагонали экрана, изменяя при этом цвет
Ввести произвольный строку с клавиатуры. нажатием клавиши Enter осуществить движение этой строки...

Не работает кнопка JButton
Подскажите плз шо за фигня , пишу простой код по книжке , и при просмотре апплета кнопка(или любой...

5
Critically
10 / 10 / 6
Регистрация: 14.03.2011
Сообщений: 389
10.03.2014, 10:10 2
У вас MyKeyAdapter никак не связан с программой, он просто объявлен и создан но ничего не делает.
0
Kuroobi
2 / 2 / 0
Регистрация: 09.10.2013
Сообщений: 48
10.03.2014, 11:45  [ТС] 3
и как же мне это исправить?
0
FimaIL
-2 / 0 / 2
Регистрация: 14.12.2013
Сообщений: 49
11.03.2014, 01:35 4
подлечил я твой код.....
учись писать код чтоб был визуально более понятным , ато пока поймёшь где что и куда .... с этого и начинаются не понимания...

всё работает как ты и хотел, будут вопросы пиши


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
115
116
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
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.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
 
public class Zvet extends JFrame implements ActionListener{
//    MyKeyAdapter mu=new MyKeyAdapter();
    static JTextField t3=new JTextField(3), t1=new JTextField(3), t2=new JTextField(3);
    static JLabel l1=new JLabel("R="),l2=new JLabel("G="),l3=new JLabel("B=");
    static JButton b1=new JButton(), b2=new JButton("Жми");
    static String r,g,b;static int rr=0;
    static int gg=0;
    static int bb=0;
    JPanel jp=new JPanel();
    
    public Zvet(){
        super("Цвет");
        
        b1.setBorderPainted(false);
        
        jp.setLayout(new FlowLayout());
        jp.add(b1);
        jp.add(l1);
        jp.add(t1);
        jp.add(l2);
        jp.add(t2);
        jp.add(l3);
        jp.add(t3);
        jp.add(b2);
        b2.setFont(new Font("Calibri", Font.ITALIC,15)); 
        b2.setPreferredSize(new Dimension(41,20));
//      b1.setBackground(Color.white);
        b1.setPreferredSize(new Dimension(270, 270));
        b1.setEnabled(false);
        t1.setHorizontalAlignment(SwingConstants.RIGHT);
        t1.setText("0");
        t2.setHorizontalAlignment(SwingConstants.RIGHT);
        t2.setText("0");
        jp.setFocusable(true);
        t3.setHorizontalAlignment(SwingConstants.RIGHT);
        t3.setText("0");
        b2.addActionListener(this);
        
        this.setFocusable(true);
        this.add(jp);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(280, 360);
        this.setLocationRelativeTo(null);
        this.setVisible(true);
    }
    
    public static void main(String[] args) {
//        JFrame j=new JFrame("Цвет");
        
        Zvet go = new Zvet();
    }
//    public class MyKeyAdapter extends KeyAdapter{
//        public void KeyPressed(KeyEvent e){
//            int key=e.getKeyCode();
//            if(key==KeyEvent.VK_ENTER){System.out.println("<kf");
//                r=t1.getText(); 
//                g=t2.getText();
//                b=t3.getText();
//                try{
////                    if(Double.parseDouble(r)<0||Double.parseDouble(r)>255||Double.parseDouble(r)-(int)Double.parseDouble(r)!=0||
////                        Double.parseDouble(g)<0||Double.parseDouble(g)>255||Double.parseDouble(g)-(int)Double.parseDouble(g)!=0||
////                                Double.parseDouble(b)<0||Double.parseDouble(b)>255||Double.parseDouble(b)-(int)Double.parseDouble(b)!=0){
////                    JOptionPane.showMessageDialog(null, "Числа в полях холжны быть целыми от 0 до 255!");
////                }else{
//                  rr=Integer.parseInt(t1.getText());
//                gg=Integer.parseInt(t2.getText());
//                bb=Integer.parseInt(t3.getText());
////                jp.setBackground(new Color(rr,gg,bb));
//                jp.setBackground(Color.blue);
////            }
//                }catch(Exception adsds){JOptionPane.showMessageDialog(null, "Вводите числа!");}
//            }
//        }
//    }
    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource().equals(b2)){
         r=t1.getText();
         g=t2.getText();
         b=t3.getText();
         
         try{
             if(Integer.parseInt(r) <= 0 || Integer.parseInt(r) > 255 || 
                     Integer.parseInt(g) <= 0 || Integer.parseInt(g) > 255 ||
                     Integer.parseInt(b) <= 0 || Integer.parseInt(b) > 255){
             JOptionPane.showMessageDialog(null, "Числа в полях холжны быть целыми от 0 до 255!");
         }else{rr=Integer.parseInt(t1.getText());
         gg=Integer.parseInt(t2.getText());
         bb=Integer.parseInt(t3.getText());
         b1.setEnabled(true);
         b1.setBackground(new Color(rr,gg,bb));
         b1.setOpaque(true);
         b1.setBorderPainted(true);
 
     }}catch(Exception adsds){JOptionPane.showMessageDialog(null, "Вводите числа!");}
    }
        
    }
}
0
Kuroobi
2 / 2 / 0
Регистрация: 09.10.2013
Сообщений: 48
11.03.2014, 20:21  [ТС] 5
Спасибо, но основная проблема не решена. Также, потерялись символы(они в кнопке b2 не отображаются), также у вас нет проверки на нецелое число. Также
основная кнопка(b1) нажимаемая, в начале не появляется.
0
ildwine
12.03.2014, 07:36     Кнопка JButton работает, но не дублируется нажатием клавиши Enter. Найти ошибку
  #6
 Комментарий модератора 
Kuroobi, называйте темы более информативно
0
12.03.2014, 07:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2014, 07:36
Привет! Вот еще темы с ответами:

Не могу найти ошибку в программе(для просмотра картинок):кнопка НАЗАД не работает(не становится активной) Найдите ошибку.

Ожидание клавиши Enter - getch не работает
Друзья привет! Спасибо всем, кто откликнется! Мелкий вопрос, но честно, уже голова кругом идет!...

Есть два текстовых поля и две кнопки. Нужно, чтобы при нажатии клавиши Enter при фокусе ввода в любом текстовом поле срабатывала первая кнопка.
Есть два текстовых поля и две кнопки. Нужно, чтобы при нажатии клавиши Enter при фокусе ввода в...


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

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

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