Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для LightProger
42 / 42 / 16
Регистрация: 29.12.2016
Сообщений: 291

RadioBatton

05.01.2017, 20:47. Показов 2137. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Извиняюсь, если уже такие темы есть, я только изучаю программирование на Java, недавно в учебнике домашним заданием было создать консольный температурный конвертер, что-бы переводил градусы из Цельсий в Фаренгейты и обратно. С этим я справился. Потом я делал калькулятор в графической оболочке(GUI), вот по его аналогии, решил консольный конвертер превратить в графический. Но вышла небольшая загвоздка. Я решил использовать RadioBatton для выбора метода конвертирования(но мы такое не проходили), и у меня в программе получилось, что можно выбрать сразу два метода конвертации, хотя нужен только один, я конечно поставил окно предупреждение, что так делать нельзя, но я понимаю, что это не правильно. Подскажите как сделать, чтобы можно только одну RadioButton выбирать из двух. Выкладываю код программы, может новичку еще, что подскажете.

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
package Alexandr_Nikitchenko;
 
import javax.swing.*;
 
public class GTCInterface {
 
    public static void main(String[] args) {
 
        Reader s = new Reader("Температурный конвертер");
 
        // Размер окна
        s.setSize(500, 140);
 
        //Делаем окно видимым
        s.setVisible(true);
 
        //Запрещаем изменять размер окна
        s.setResizable(false);
 
        // Создаем расположение окна по центру
        s.setLocationRelativeTo(null);
 
        //Действие при закрытии окна
        s.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}
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
package Alexandr_Nikitchenko;
 
import javax.swing.*;
import java.awt.*;
 
/**
 * Created by Александр Никитченко on 05.01.2017.
 */
public class Reader extends JFrame{
 
    //Объявление переменных
    JPanel p1, p2, p3;
    JRadioButton r1, r2;
    JButton buttonReset;
    JButton buttonConvert;
    JLabel l1, l2, l3, l4;
    JTextField displayed;
 
 
    public Reader(String s){
        super(s);
 
        // Создаем панели и схему расположения
        p1 = new JPanel();
        GridLayout gl1 = new GridLayout(1, 3, 1, 1);
        p1.setLayout(gl1);
 
 
        // Создание текстового поля и кнопок выбора
        l1 = new JLabel("Выберите метод:");
        l2 = new JLabel("Введите температуру: ");
        l3 = new JLabel("");
        l4 = new JLabel("");
        displayed = new JTextField(5);
        r1 = new JRadioButton("Цельсий");
        r2 = new JRadioButton("Фаренгейт");
        buttonReset = new JButton("Сброс");
        buttonConvert = new JButton("Конвертировать");
 
        //Добавление созданных компонентов на панель
        p1.add(l1);
        p1.add(r1);
        p1.add(r2);
        add("North", p1);
 
        //Создаем панель и схему расположения
        p2 = new JPanel();
        GridLayout gl = new GridLayout( 2, 2, 10, 10);
        p2.setLayout(gl);
 
        //Добавляем текстовое поле и поле ввода
        p2.add(l2);
        p2.add(displayed);
        p2.add(l3);
        p2.add(l4);
        add("Center", p2);
 
        //Создаем новую панель
        p3 = new JPanel();
 
        //Добавляем на панель кнопки
        p3.add(buttonConvert);
        p3.add(buttonReset);
        add("South", p3);
 
        //Передача функций в класс Logic
        Logic lc = new Logic(this);
        r1.addActionListener(lc);
        r2.addActionListener(lc);
        buttonConvert.addActionListener(lc);
        buttonReset.addActionListener(lc);
    }
 
}
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
package Alexandr_Nikitchenko;
 
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
/**
 * Created by Александр Никитченко on 05.01.2017.
 */
 
    // Создание слушателя
    public class Logic implements ActionListener {
 
    Reader parent;
    double result = 0;
 
    Logic(Reader parent) {
        this.parent = parent;
    }
 
    @Override
    public void actionPerformed(ActionEvent e) {
 
        try {
            // Логика работы
            String dispFieldText = parent.displayed.getText();
            double displayValue;
 
 
            displayValue = Double.parseDouble(dispFieldText);
 
 
            Object src = e.getSource();
 
            if (parent.r1.isSelected() && src == parent.buttonConvert ) {
                String b;
                b = "Ваша температура в Фаренгейтах равна: ";
                parent.l3.setText(b);
                result = displayValue * 1.8 + 32;
                String a = "" + result + "F";
                parent.l4.setText(a);
 
            } else if (parent.r2.isSelected() && src == parent.buttonConvert) {
                String b;
                b = "Ваша температура в Цельсиях равна: ";
                parent.l3.setText(b);
                result = (displayValue - 32) * 5 / 9;
                String a = "" + result + "C";
                parent.l4.setText(a);
            }
            if (parent.r2.isSelected() && parent.r1.isSelected() && src == parent.buttonConvert) {
                JOptionPane.showMessageDialog(null, "Выберите один из методов рассчета!");
                parent.displayed.setText(null);
                parent.l3.setText(null);
                parent.l4.setText(null);
                }
 
            if (src == parent.buttonReset) {
                    parent.displayed.setText(null);
                    parent.l3.setText(null);
                    parent.l4.setText(null);
                }
            }catch(Exception e1){
            parent.displayed.setText(null);
        }
 
        }
 
    }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.01.2017, 20:47
Ответы с готовыми решениями:

Цикл для radiobatton
сделал несколько rdiobatton-ов при выборе 1 radiobatton-а в Image появляется допустим квадрат , а при выборе другого допустим круг , но вот...

При нажатии checkbox, активируются radiobatton
Здравствуйте! Есть чекбокс <p><input type="checkbox" name="a" value=""> Выбрать</p> И есть радиокнопки <p><input...

Сменить изображение в Canvas при нажатие на Radiobatton
Как ето зделать?

6
13 / 13 / 10
Регистрация: 19.11.2015
Сообщений: 67
06.01.2017, 08:32
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
JRadioButton birdButton = new JRadioButton(birdString);
    birdButton.setActionCommand(birdString);
    birdButton.setSelected(true);
 
    JRadioButton catButton = new JRadioButton(catString);
    catButton.setActionCommand(catString);
 
    JRadioButton dogButton = new JRadioButton(dogString);
    dogButton.setActionCommand(dogString);
 
    JRadioButton rabbitButton = new JRadioButton(rabbitString);
    rabbitButton.setActionCommand(rabbitString);
 
    JRadioButton pigButton = new JRadioButton(pigString);
    pigButton.setActionCommand(pigString);
 
    //Group the radio buttons.
    ButtonGroup group = new ButtonGroup();
    group.add(birdButton);
    group.add(catButton);
    group.add(dogButton);
    group.add(rabbitButton);
    group.add(pigButton);
 
    //Register a listener for the radio buttons.
    birdButton.addActionListener(this);
    catButton.addActionListener(this);
    dogButton.addActionListener(this);
    rabbitButton.addActionListener(this);
    pigButton.addActionListener(this);
...
public void actionPerformed(ActionEvent e) {
   //action
}
0
 Аватар для LightProger
42 / 42 / 16
Регистрация: 29.12.2016
Сообщений: 291
06.01.2017, 12:04  [ТС]
Немного переделал по вашему примеру. Что-то все равно не работает, также можно выбрать сразу два RadioButton, а не один из двух. Единственное, что не стал группировать в group.

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
package Alexandr_Nikitchenko;
 
import javax.swing.*;
import java.awt.*;
 
/**
 * Created by Александр Никитченко on 05.01.2017.
 */
public class Reader extends JFrame{
 
    //Объявление переменных
    JPanel p1, p2, p3;
    JRadioButton r1, r2;
    JButton buttonReset;
    JButton buttonConvert;
    JLabel l1, l2, l3, l4;
    JTextField displayed;
    String r1string = "Цельсий";
    String r2string = "Фаренгейт";
 
 
 
    public Reader(String s){
        super(s);
 
        // Создаем панели и схему расположения
        p1 = new JPanel();
        GridLayout gl1 = new GridLayout(1, 3, 1, 1);
        p1.setLayout(gl1);
 
 
        // Создание текстового поля и кнопок выбора
        l1 = new JLabel("Выберите метод:");
        l2 = new JLabel("Введите температуру: ");
        l3 = new JLabel("");
        l4 = new JLabel("");
 
        displayed = new JTextField(5);
 
        r1 = new JRadioButton(r1string);
        r1.setActionCommand(r1string);
        r1.setSelected ( true );
 
        r2 = new JRadioButton(r2string);
        r2.setActionCommand(r2string);
 
        buttonReset = new JButton("Сброс");
        buttonConvert = new JButton("Конвертировать");
 
        //Добавление созданных компонентов на панель
        p1.add(l1);
        p1.add(r1);
        p1.add(r2);
        add("North", p1);
 
        //Создаем панель и схему расположения
        p2 = new JPanel();
        GridLayout gl = new GridLayout( 2, 2, 10, 10);
        p2.setLayout(gl);
 
        //Добавляем текстовое поле и поле ввода
        p2.add(l2);
        p2.add(displayed);
        p2.add(l3);
        p2.add(l4);
        add("Center", p2);
 
        //Создаем новую панель
        p3 = new JPanel();
 
        //Добавляем на панель кнопки
        p3.add(buttonConvert);
        p3.add(buttonReset);
        add("South", p3);
 
        //Передача функций в класс Logic
        Logic lc = new Logic(this);
        r1.addActionListener(lc);
        r2.addActionListener(lc);
        buttonConvert.addActionListener(lc);
        buttonReset.addActionListener(lc);
 
    }
 
}
P.S. Может я что-то не догоняю?
0
 Аватар для LightProger
42 / 42 / 16
Регистрация: 29.12.2016
Сообщений: 291
06.01.2017, 12:17  [ТС]
Вот фото окна программы. Выбираются оба radiobutton
Миниатюры
RadioBatton  
0
 Аватар для LightProger
42 / 42 / 16
Регистрация: 29.12.2016
Сообщений: 291
07.01.2017, 12:41  [ТС]
Добился я чего хотел, путем вставки вот такого кода:

Java
1
2
3
4
5
6
7
8
9
   if (parent.r1.isSelected ( )) {
                {
                    parent.r2.setSelected (false );
 
                }
            } else if (parent.r2.isSelected ()){
                parent.r1.setSelected ( false );
 
            }
Теперь одновременно две кнопки нельзя выбрать, но появилась другая проблема, можно переключится с одной кнопки на другую, но нельзя переключится сразу обратно, обязательно нужно снять выделение с той кнопки на которую переключился.
0
13 / 13 / 10
Регистрация: 19.11.2015
Сообщений: 67
07.01.2017, 13:13
Вот выбирается только один вариант
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
 public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setPreferredSize(new Dimension(500,500));
        //------------------------------
 
        JRadioButton yesButton   = new JRadioButton("Yes", true);
        JRadioButton noButton    = new JRadioButton("No");
        JRadioButton maybeButton = new JRadioButton("Maybe");
 
        //... Create a button group and add the buttons.
        ButtonGroup bgroup = new ButtonGroup();
        bgroup.add(yesButton);
        bgroup.add(noButton);
        bgroup.add(maybeButton);
 
        //... Arrange buttons vertically in a panel
        JPanel radioPanel = new JPanel();
        radioPanel.setLayout(new GridLayout(3, 1));
        radioPanel.add(yesButton);
        radioPanel.add(noButton);
        radioPanel.add(maybeButton);
 
        //------------------------------
     frame.add(radioPanel);
        frame.pack();
        frame.setVisible(true);
    }
1
 Аватар для LightProger
42 / 42 / 16
Регистрация: 29.12.2016
Сообщений: 291
14.01.2017, 00:53  [ТС]
Спасибо! Все получилось.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.01.2017, 00:53
Помогаю со студенческими работами здесь

Как организовать: при нажатии на Image взводить Radiobatton?
Как при нажатии на картину (Image) выполнялся какой то RadioBatton? При нажатии на картинку происходить выполнения радио батонна...

Как сделать чтобы groupBox, label, radioBatton были прозрачными?
Как сделать чтобы groupBox,label,radioBatton были прозрачными, чтобы был виден рисунок лежащий на форме?

Как создать массив, чтобы в нем хранились данные для label и radioBatton's
Как создать массив, чтобы в нем хранились данные для label и radioBatton's(программа тестер)!!!

выдает ошибку при переключении radioBatton и как сделать связь в БД многие к одному
Есть 3 radiobatton 2 DBGrida то есть мне нужно сделать так, чтобы при переключениях баттонов в гридах тоже менялись таблицы И второй...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru