Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 2
Регистрация: 28.09.2012
Сообщений: 161

Доступ к компоненту

25.10.2013, 10:22. Показов 858. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть 2 класса. В первом классе описан JFrame со всеми полями и методами, во втором JPanel с кнопками.
Возник вопрос - как можно в первого класса добавить обработчик на нажатие кнопок второго класса.
Не могу понять логику этого процесса.
Вот пробую так создаю метод во втором классе:
Java
1
2
3
4
public JButton getButton(){
//  что сюда вставить
return JButton // как получить кнопку?;
}
Спасибо за ответ
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.10.2013, 10:22
Ответы с готовыми решениями:

Доступ к компоненту
Добрый день, нужен совет или наставление на правильный путь. Есть компонент Combobox. Необходимо выполнить такую задачу: в Combobox...

Доступ к компоненту из другой формы
Здравствуйте, хотел бы узнать пути решение своей проблемы: У меня есть главная форма, на ней есть 3 usercontrol'а(вход, главное окно,...

Получить доступ к компоненту на форме
package p1; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import...

6
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
25.10.2013, 11:56
Где то в классе с кнопками есть запись типа:
Java
1
private JButton блаблабла;
Если да, то
Java
1
2
3
public JButton getButton(){
   return блаблабла;
}
0
0 / 0 / 2
Регистрация: 28.09.2012
Сообщений: 161
25.10.2013, 12:10  [ТС]
это класс с кнопками

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
public class Navig extends JPanel {
/*метод для установки общих свойств кнопки*/
    public void setButton(String text, Color btnColor, int x, int y){
        JButton btn = new JButton(text);
        btn.setBounds(x, y, 220, 65);
        btn.setAlignmentX(Component.CENTER_ALIGNMENT);
        btn.setBorder(new EmptyBorder(0, 0, 0, 0));
        btn.setBackground(btnColor);
        btn.setFont(new Font("Century Gothic", Font.PLAIN, 18));
        btn.setForeground(new Color(240, 255, 255));
        btn.setFocusable(false);
        add(btn);
    }
 
 
    public JPanel createNavig(int index) {
        removeAll();
        setBorder(new EmptyBorder(0, 0, 0, 0));
        setOpaque(true);
        setLayout(null);
 
        switch (index) {
        case 0: // Вкладка Данные
            setButton("Добавить данные", new Color(46, 139, 87), 5, 25);
 
            setButton("Редактировать", new Color(51, 51, 204), 5, 95);
        break;
 
        case 1: // Вкладка Поиск
            setButton("Поиск", new Color(45, 45, 65), 5, 25);
        break;
 
        case 2: // Вкладка Отчет
            setButton("Новый", new Color(15, 125, 125), 5, 25);
            setButton("Просмотр", new Color(123, 120, 105), 5, 95);
        break;
 
        default:
        break;
        }
        return this;
    }
    
    /*Установка доступности компонентов*/
    public void setEnabledTrue(boolean Enabled) {
        if (Enabled) {
            for (int i = 0; i < this.getComponentCount(); i++) {
                this.getComponent(i).setEnabled(true);
            }
        } else {
            for (int i = 0; i < this.getComponentCount(); i++) {
                this.getComponent(i).setEnabled(false);
            }
        }
    }
}
Мне надо в другом классе вытащить кнопку и навесить на нее обработку события (например вставить строку в таблицу)

КАК ОБРАТИТЬСЯ К ЭТОЙ КНОПКЕ С ДРУГОГО КЛАССА
0
237 / 236 / 72
Регистрация: 02.07.2013
Сообщений: 881
25.10.2013, 13:13
public class Navig extends JPanel {

private JButton btn;

/*метод для установки общих свойств кнопки*/
public void setButton(String text, Color btnColor, int x, int y){
btn = new JButton(text);
........

ну и как писали выше сделай гетер

public JButton getBtn() {
return btn;
}

ну или сразу сделай, если не критично
public JButton btn;
0
0 / 0 / 2
Регистрация: 28.09.2012
Сообщений: 161
25.10.2013, 13:27  [ТС]
Спасибо буду пробовать.
0
 Аватар для -LM-
57 / 57 / 12
Регистрация: 11.02.2013
Сообщений: 132
25.10.2013, 13:31
чтоб добавить
обработку события (например вставить строку в таблицу)
нужно создать клас который будет имплиментить ActionListener
дальше в классе вам эта кнопка уже не нужна, она будет связана с этим класом когда вы к кнопке добавите ActionListener, вам уже нужны другие поля, которые будут бегать в БД и чтото с ней делать, эти поля можно передать в этот клас через конструктор
например такой клас
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class ButtonListener implements ActionListener {
 
        //нужные поля
        //нужные поля
        //нужные поля
 
        public ButtonListener(/*нужные поля, нужные поля ,нужные поля*/) {
            
//          this.нужные поля = нужные поля
//          this.нужные поля = нужные поля
//          this.нужные поля = нужные поля
        }
        @Override
        public void actionPerformed(ActionEvent e) {
            // а теперь с помощью этих полей чтото делаем
        }
 
    }
после чего в классе с кнопкой создаем обьект класса, и в конструктор передаем все нужные поля
Java
1
ButtonListener listener = new ButtonListener(/*нужные поля, нужные поля ,нужные поля*/);
и добавляем листенер на кнопку
Java
1
btn.addActionListener(listener)
1
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
25.10.2013, 14:15
В такой реализации при вызове метода setButton() создается только локальная переменная JButton btn и сам класс о ней ничего в дальнейшем не знает.
Для того, что бы в дальнейшем была возможность получить доступ к кнопке, необходимо хотя бы:
либо
- объявлять переменные кнопок в полях класса и делать для них геттеры.
либо (если заранее неизвестно, сколько будет кнопок на панели)
- завести какую-нибудь коллекцию, куда складывать переменные. Аналогично, сделав для нее геттер.
Это самое простое

Можно извратиться и через getComponents() искать кнопки
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.10.2013, 14:15
Помогаю со студенческими работами здесь

Не могу получить доступ к компоненту NavMeshAgent
Здравствуйте. Балуюсь с навигацией в Юньке. Настроил навигатор. На объект добавил компонент NavMeshAgent. Хочу запустить навигацию по...

Доступ к компоненту textBox1 из статического метода.
Здравствуйте. Подскажите пожалуйста, как обратится к элементу textBox1, расположенному на форме, из статического метода (метод должен быть...

Доступ к компоненту формы из другого класса
как я могу изменить содержимое textbox формы из другого класса? естественно,без создания экземпляра формы. я уже столько всего перепробовал...

Доступ к компоненту формы из другого класса
Здравстуйте. Читал разные темы, которые уже обсуждались ранее, но что то у меня не получается достучаться например до label1 из другого...

Доступ к компоненту progressBar формы из другого класса
Добрый день! Помогите решить задачу: Есть форма (Form1), которая содержит progressBar1. Необходимо и пользовательского класса...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
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. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru