Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java GUI
Войти
Регистрация
Восстановить пароль
 
Almost29
9 / 9 / 1
Регистрация: 28.03.2013
Сообщений: 82
#1

Не правильно написанные ActionListeners

24.11.2015, 06:08. Просмотров 207. Ответов 0

Здравствуйте.

Было поставлено задание сделать простой органайзер на месяц, интерфейс ниже.
Возникла проблема с логикой программы, так как до этого работал в C# и логика частично не понятна.

Последовательность действий:
1) Вводим текст в поле;
2) Сохраняем, необходимо выбрать дату, кнопка сохранения меняет цвет во время выбора даты;
3) Сохраненная кнопка меняет цвет и содержит данные;
4) При простом нажатии на кнопку даты в поле выводятся данные из кнопки.

И после этого текст как-то должен привязаться к этой кнопке.
Но появились непонятки с ActionListener'ами.
- То ли необходимо создавать их на кнопках дней, то ли на кнопке сохранения, как правильно в данном случае?
- Нет доступа ко всем объектам в классах ActionListener, видимо этот доступ и не необходим, но тогда как?
- При работе моего ActionListener'а цвет меняли то вообще все кнопки, то те, которые я выбрал, после чего я понял, что работаю в крайне не правильном направлении, так как сохраняю экземпляры объектов в Action'ах.

Как сделать правильно? Совсем запутался.
Код, в принципе, не важен, хочется понять каким образом нужно строить в данной ситуации ActionListener'ы и каким образом записывать данные, и что бы все это было логично.

Спасибо.

Код формы:
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
package Class;
import javax.swing.*;
import java.awt.*;
import java.util.*; 
 
public class Grid extends JFrame {
    public Grid(String s) {
        super(s);
 
        setLayout(new BorderLayout());
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        JPanel event = new JPanel();
        event.setLayout(new BorderLayout());
        JTextField text = new JTextField("Enter event");
        event.add(text,BorderLayout.CENTER);
        JButton save = new JButton("Save");
        save.setBackground(new Color(255,255,255));
        //save.addActionListener(new OnClick(save));
        event.add(save,BorderLayout.EAST);
        add(event,BorderLayout.NORTH);
 
        JPanel panelCalendar = new JPanel();
        panelCalendar.setBackground(new Color(255,255,255));
        panelCalendar.setLayout(new GridLayout(5,7));
        for(int i=1; i<32; i++){
            JButton btn = new JButton("Day " + i);
            btn.setName(String.valueOf(i));
            btn.setBackground(new Color(255,255,255));
            save.addActionListener(new Handler(btn,text));
            panelCalendar.add(btn,BorderLayout.CENTER);
        }
        add(panelCalendar, BorderLayout.CENTER);
        pack();
        setSize(800,300);
        setVisible(true);
    }
}
Код примера листенера:
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
package Class;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*; 
 
public class Handler implements ActionListener {
 
    private JButton b;
    private JTextField t;
    protected String data;
 
    public Handler(JButton b, JTextField t) {
        this.b = b;
        this.t = t;
        data = "";
    }
 
    @Override
    public void actionPerformed(ActionEvent e) {
        Color col = new Color(0,150,255);
        ((JButton)e.getSource()).setBackground(col);
        b.addActionListener((ActionEvent e1) -> {
            this.data = t.getText();
            this.b.setBackground(new Color(100,200,0));
            ((JButton)e.getSource()).setBackground(new Color(255,255,255));
        });
 
    }
}

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Миниатюры
Не правильно написанные ActionListeners  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2015, 06:08
Ответы с готовыми решениями:

Приложения написанные на Java
Провожу исследование &quot;Кроссплатформенное программирование&quot;, одна из частей -...

Чаты написанные на java
пипл, что вы можете сказать о чатах написанных на java, стоит ли заниматься...

Это синтаксически правильно написанные редиректы?
Здравствуйте! Пытаюсь с помощью .htaccess настроить редирект с ссылок вида...

Переводить числа, написанные словами, в числа, написанные цифрами
using System; using System.Collections.Generic; using System.Text; namespace...

Перевести числа, написанные словами, в числа, написанные цифрами
using System; using System.Collections.Generic; using System.Text; namespace...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2015, 06:08

Перевести числа, написанные словами, в числа, написанные цифрами
В общем это код перевода чисел, написанных цифрами, в числа, написанные...

Программы написанные на c++
Программы написанные на c++

Не запускаются написанные приложения
Здравстуйте, изачаю с# на Visual studio 2010/2013 Программы работают через...


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

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

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