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

Отключить эффект отключенной JButton

11.10.2019, 14:27. Показов 2883. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Стоит задача убрать эффект у отключенных кнопок.
Видимого эффекта не должно быть:

Есть идеи, как это реализовать?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.10.2019, 14:27
Ответы с готовыми решениями:

JButton, отключить изменение цвета при нажатии
Как сделать, чтобы при нажатии на кнопку - не менялся её цвет. setFocusPainted() не помогает p.s. Не судите строго - я новичок)

Задолбал один эффект в CentOS, как отключить
Всем привет! CentOS 7.1. Речь идёт об эффекте, когда курсор мышки подводишь к верхнему левому углу экрана, и вдруг все окна в...

Как отключить эффект прозрачности geforce fx5200
Можно ли вырубить эффект прозрачности на компе вообще, что бы играх ничего прозрачного не было? Видео карта geforce fx5200 64мб. Если...

10
 Аватар для Goongala
1022 / 562 / 185
Регистрация: 18.08.2013
Сообщений: 2,027
Записей в блоге: 2
11.10.2019, 14:43
Лучший ответ Сообщение было отмечено 9124289 как решение

Решение

Можно либо расширить класс JButton и добавить туда flag типа boolean, либо создать такую переменную в классе, где кнопка создана и добавить к ней ActionListener таким образом
Java
1
2
3
4
5
button.addActionListener(() -> {
if (enabled) {
doSomething;
}
});
т.е. визуально кнопка не изменится, но будет выполнять свою функцию только в том случае, если enabled равно true. Лучше всего, конечно, всё-таки расширить JButton и добавить какой-нибудь метод вроде isUsable() (либо можно переопределить isEnabled()), тада эт будет выглядеть так
Java
1
2
3
4
5
button.addActionListener(() -> {
if (button.isUsable()) {
doSomething;
}
});
Конечно, ещё есть вариант вручную вырубать кнопку методом setEnabled(false) и менять её background и foreground, но этот способ какой-то стрёмный, как по-моему
0
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 7
11.10.2019, 15:02  [ТС]
Gungala, спасибо за ответ. Но я новичок в JAVA.
Не могли бы подробнее описать, как расширить класс?
0
 Аватар для Goongala
1022 / 562 / 185
Регистрация: 18.08.2013
Сообщений: 2,027
Записей в блоге: 2
11.10.2019, 15:14
Скомпилируйте и запустите. При нажатии на кнопку цвет фона будет меняться на новый, но если снять галочку, то кнопка перестанет работать, хотя внешне никак не изменится
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
import javax.swing.*;
import java.awt.*;
import java.util.Random;
 
public class Test {
    public static void main(String args[]) {
        EventQueue.invokeLater(() -> {
            JFrame f = new JFrame();
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setSize(400, 400);
            f.setLocationRelativeTo(null);
 
            Random rand = new Random();
 
            MyButton b = new MyButton("Change background");
            b.addActionListener(event -> {
                if (b.isUsable()) {
                    f.getContentPane().setBackground(new Color(rand.nextInt(Integer.MAX_VALUE)));
                }
            });
 
            JCheckBox cb = new JCheckBox("Usable");
            cb.setOpaque(false);
            cb.setSelected(true);
            cb.addActionListener(event -> {
                b.setUsable(cb.isSelected());
            });
 
            f.getContentPane().setLayout(new FlowLayout());
            f.add(b);
            f.add(cb);
            f.setVisible(true);
        });
    }
}
 
class MyButton extends JButton {
    private boolean usable = true;
 
    public MyButton(String name) {
        super(name);
    }
 
    public boolean isUsable() {
        return usable;
    }
 
    public void setUsable(boolean usable) {
        this.usable = usable;
    }
}
0
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 7
11.10.2019, 16:17  [ТС]
Gungala, могли бы закомитить класс MyButton? Что происходит в каждом методе
0
 Аватар для Goongala
1022 / 562 / 185
Регистрация: 18.08.2013
Сообщений: 2,027
Записей в блоге: 2
11.10.2019, 16:30
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class MyButton extends JButton { // объявляется класс MyButton, расширяющий класс JButton
    private boolean usable = true; // объявляется приватное поле класса типа boolean,по умолчанию принимающее значение true
 
    public MyButton(String name) { // определяется конструктор класса MyButton, принимающий в качестве аргумента переменную типа String
        super(name); // вызывается конструктор из суперкласса (JButton) с переменной name в качестве аргумента
    }
 
    public boolean isUsable() { // объявляется метод, возвращающий текущее состояние поля usable
        return usable; // вернуть значение поля usable
    }
 
    public void setUsable(boolean usable) { // объявляется метод, устанавливающий значение поля usable
        this.usable = usable; // заменить значение поля usable данного объекта на переданное значение
    }
}
Добавлено через 3 минуты
Я не понимаю, куда вы вообще лезете. Очевидно, что вам не стоит заниматься написанием GUI, если вы не в состоянии понять такой элементарный код
1
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
11.10.2019, 17:41
Цитата Сообщение от Gungala Посмотреть сообщение
Скомпилируйте и запустите
Ничего не понял но очень интересно
Цитата Сообщение от 9124289 Посмотреть сообщение
Стоит задача убрать эффект у отключенных кнопок.
Имелось ввиду эффект при наведении мышки ?
Миниатюры
Отключить эффект отключенной JButton   Отключить эффект отключенной JButton  
0
 Аватар для Goongala
1022 / 562 / 185
Регистрация: 18.08.2013
Сообщений: 2,027
Записей в блоге: 2
11.10.2019, 17:46
Nidl, компилируйте с JDK 1.8+
0
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
11.10.2019, 18:06
Цитата Сообщение от Gungala Посмотреть сообщение
компилируйте с JDK 1.8+
возможно, возможно но launch4j под файлы начиная с версии JDK 1.8+ делает не рабочие exe, потоки в кашу перемалывает, поэтому я от от всех версий с JDK 1.8+ ограничен, сам же сижу на 1.79. А мне очень важно иметь отлаженный механизм для создания exe.

Мне не понятно просто что значит
Цитата Сообщение от 9124289 Посмотреть сообщение
Стоит задача убрать эффект у отключенных кнопок.
убрать эффект при наведении мыши? Если так то зачем так глубоко копать, у кнопки все чтуки можно просто вкл/выкл через true

Ну да ладно, пора пить чай
0
 Аватар для Goongala
1022 / 562 / 185
Регистрация: 18.08.2013
Сообщений: 2,027
Записей в блоге: 2
11.10.2019, 18:18
Nidl, как вы без лямбда-выражений живёте? Офигенная штука же
0
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
11.10.2019, 20:20
Цитата Сообщение от Nidl Посмотреть сообщение
А мне очень важно иметь отлаженный механизм для создания exe.
У всего есть цена
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.10.2019, 20:20
Помогаю со студенческими работами здесь

Не запускаются сервисы и Msconfig из-за отключенной службы
Ребята,у меня важная проблема.Казалось бы очень известная проблема(Указанная служба не может быть запущена,поскольку она отклю......).делал...

Ноутбук перезагружается при отключенной автоматической перезагрузке
Здравствуйте! У меня проблема - ноутбук Toshiba с недавнего времени стал внезапно перезагружаться, без синего окна и т.п. Вот его...

Лаги в играх при отключенной вертикальной синхронизации NVIDIA
Здравствуйте, много форумов перерыл, но решения так и не нашел. Проблема заключается в том, что когда отключаю вертикальной синхронизацию...

Куда делись 500 MB RAM на компьютере с отключенной интегрированной графикой?
Установлено 4 GB RAM. При установленной Win 7 x64 Все 4 GB с отключенной интегрированной графикой есть, а на Win7 x86 их нет. В мониторе...

Как сделать эффект размытия (эффект стекла) в Xaml?
Как сделать эффект размытия(эффект стекла) в Xaml?


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru