Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 15.10.2019
Сообщений: 44

Gui не отзывается

12.01.2020, 18:05. Показов 1477. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хотелось бы понять, почему данная программа не отзывается, когда я нажимаю на кнопки

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
import javax.swing.*;
import java.awt.*;
 
public class Score extends JFrame {
    private int mi, ma;
    private JLabel score = new JLabel("Result: " + mi + " x "+ ma);
    private JLabel last = new JLabel("N/A");
    private JLabel win = new JLabel("DRAW");
 
 
 
    private Score()
    {
        super("AC Milan vs Real Madrid");
        setLayout(new GridLayout(3,3));
        JPanel[] pnl = new JPanel[9];
 
 
        for(int i = 0 ; i<pnl.length ; i++)
        {
            pnl[i] = new JPanel();
            add(pnl[i]);
        }
 
 
 
        pnl[3].setLayout(new FlowLayout());
        pnl[3].add(last);
 
        pnl[5].setLayout(new FlowLayout());
        pnl[5].add(win);
 
        pnl[6].setLayout(new FlowLayout());
        JButton milan = new JButton("AC Milan");
        pnl[6].add(milan);
 
        pnl[7].setLayout(new FlowLayout());
        pnl[7].add(score);
 
        pnl[8].setLayout(new FlowLayout());
        JButton madrid = new JButton("Real Madrid");
        pnl[8].add(madrid);
 
        setSize(400,400);
 
        milan.addActionListener(actionEvent -> {
            mi++;
            score = new JLabel("Result: " + mi + " x "+ ma);
            last = new JLabel("Last scorer: AC Milan");
 
            if(mi>ma)
                win = new JLabel("Winner: AC Milan");
            else if (mi<ma)
                win = new JLabel("Winner: Real Madrid");
            else
                win = new JLabel("DRAW");
        });
 
        madrid.addActionListener(actionEvent -> {
            ma++;
            score = new JLabel("Result: " + mi + " x "+ ma);
            last = new JLabel("Last scorer: Real Madrid");
 
            if(mi>ma)
                win = new JLabel("Winner: AC Milan");
            else if (mi<ma)
                win = new JLabel("Winner: Real Madrid");
            else
                win = new JLabel("DRAW");
        });
 
    }
 
 
    public static void main(String[]args)
    {
        new Score().setVisible(true);
    }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.01.2020, 18:05
Ответы с готовыми решениями:

Не отзывается рабочий стол Windows XP
Доброго времени суток,форумчане! У меня проблема такова:при запуске компьютера в обычном режиме все происходит довольно гладко,пока дело...

Не отзывается монитор после разгона процессора
Не отзывается монитор после разгона процессора,что это может быть? разгонял процессор i3 540 множитель поставил 22 частота 208. мат плата...

Касперский не отзывается, не обнаруживает электронный ключ
Касперский не отзывается, не обнаруживает электронный ключ, хотя другие влешки видит, и не работает &quot;устройства и принтеры&quot; -...

11
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
12.01.2020, 18:35
ты просто кладешь в переменные какие то новые объекты, что по-твоему должно произойти?
0
0 / 0 / 0
Регистрация: 15.10.2019
Сообщений: 44
12.01.2020, 19:37  [ТС]
xoraxax, хочу, чтобы происходило обновление на экране. По задумке, при нажатии на кнопку лейблы должны меняться, а вместе с этим и строки в gui тоже, но этого не происходит. и можно ли как нибудь проверять нажатия на кнопку? В qt это была отладка, здесь она тоже есть, но я не нашел как через нее проверять нажатие
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
12.01.2020, 20:35
Еще раз говорю, ты просто в переменную засовываешь новый объект в своем коде. Больше ничего не происходит. Откуда по-твоему ява должна знать, что ты хочешь обновить свой гуй? Про дебаггер тут есть отдельная тема с картинками
0
0 / 0 / 0
Регистрация: 15.10.2019
Сообщений: 44
12.01.2020, 22:34  [ТС]
xoraxax,
Цитата Сообщение от xoraxax Посмотреть сообщение
Откуда по-твоему ява должна знать, что ты хочешь обновить свой гуй?
Именно для этого я и создал тему на форуме дядь. Чтобы узнать, как это работает
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
12.01.2020, 23:14
Цитата Сообщение от MikeAL Посмотреть сообщение
Чтобы узнать, как это работает
а давай ты для этого что-нибудь почитаешь, типа туториала от оракла например
0
0 / 0 / 0
Регистрация: 15.10.2019
Сообщений: 44
13.01.2020, 00:57  [ТС]
xoraxax, ... зачем ты тогда здесь сидишь, если от тебя нет пользы? Думаешь я видел где то этот туториал?) или он при установке java выползает?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
13.01.2020, 06:07
MikeAL, ты настолько беспомощен, что про гугл не слышал? https://lmgtfy.com/?q=oracle+swing+tutorial
0
4 / 3 / 2
Регистрация: 05.04.2016
Сообщений: 19
13.01.2020, 21:53
Лучший ответ Сообщение было отмечено MikeAL как решение

Решение

MikeAL, всё у тебя в коде уже есть, всё почти в порядке. Нужно сделать маленькое исправление. Строку
Java
1
score = new JLabel("Result: " + mi + " x "+ ma);
замени на
Java
1
score.setText("Result: " + mi + " x "+ ma);
То есть, вместо создания новой JLabel, замени текст в старой. В остальных случаях - то же самое.

Если хочешь обновить окно, вставь
Java
1
getContentPane().repaint();
Но, текст должен обновиться и без этого.

Добавлено через 13 минут
Вдогонку.

Причина того, что в исходном коде не обновлялись метки. Когда ты в конструкторе создал JLabel первый раз, ты ее добавил к JPanel, и компоновщик запомнил адрес этой метки (JPanel). Следующий new JPanel(...) создал новый объект, по новому адресу, но компоновщику про это не сказал. В принципе, можно было бы, отцепить старую метку от панели и прицепить новую, но проще поменять текст у уже существующей.

Если нужны туториалы по Swing, посмотри тут: https://docs.oracle.com/javase/tutorial/index.html
1
0 / 0 / 0
Регистрация: 15.10.2019
Сообщений: 44
18.01.2020, 18:40  [ТС]
ABC-, Спасибо за исчерпывающий ответ) Теперь все встало на свои места
0
4 / 3 / 2
Регистрация: 05.04.2016
Сообщений: 19
19.01.2020, 22:10
MikeAL, Учти, что у тебя категорически неправильно создается и, главное, НЕ убивается главное окно и процесс. Попробуй последить в диспетчере процессов за судьбой процесса, отвечающего за твою задачу. Увидишь, что после закрытия окна процесс продолжает висеть. Так что к вечеру ты наплодишь десятки повисших процессов.

В том туториале, ссылку на который я тебе послал, посмотри самый начальный - Using Top-Level Containers и пользуйся примером оттуда TopLevelDemo.java. Удачи!
0
0 / 0 / 0
Регистрация: 15.10.2019
Сообщений: 44
10.02.2020, 19:34  [ТС]
ABC-, Спс
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.02.2020, 19:34
Помогаю со студенческими работами здесь

Как запустить qt gui программу, как демон, без gui, скрыв gui?
Как запустить qt gui программу, как демон, без gui, скрыв gui? В gui браузер выполняет определенные действия, и нужно запустить этот...

В listbox.multiselect отзывается лишь последний выбранный элемент
Доброе что-то. Использую Access 2013 года. Есть проблема со списком. Необходимо организовать список, выбрать оттуда несколько элементов и...

Компьютер сильно тормозит, очень долго отзывается на клики и клавиши
Компьютер по ОС Windows7, после каждой перезагрузки работает более-менее нормально, но потом постепенно все медленнее и медленнее - долго...

STM32F103 подключение через UART-RS485 счетчик Modbus RTU не отзывается
Электрически все подключается через UART2-&gt;конвертер-RS485-&gt;счетчик 1. Проверка счетчика через ПК-&gt;USB-конвертер-RS485-&gt;счетчик,...

[ubuntu] Как запустить qt-gui программу без gui-интерфейся из консоли?
Как запустить qt-gui программу без gui-интерфейса из консоли?


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru