Почему дублируется диалог?

154
14 октября 2019, 23:10

Почему дублируется диалог? Если запустить меню, выбрать доход, ввести доход, закрыть диалог, закрыть ввод дохода, в меню выбрать доход, ввести доход, то после нажатия на клавишу выдастся два диалога. и количество будет увеличиваться с каждым повторением. Возможно , нужно удалять объекты после каждого закрытия добавления дохода? Как исправить данную ошибку?

public class Test
{
    int [] massD=new int[10];
    int numD=0;
    JButton buttonD=new JButton("Добавить доход");  //кнопки меню
    JTextField input1D=new JTextField("",2); //ввод дохода
    JButton button1D = new JButton("Ok"); //кнопка подтверждения для дохода
    public void Test()
    {
        JPanel panelm = new JPanel();
        buttonD.setFont(new Font("A", Font.BOLD, 35));
        panelm.add(buttonD);
        JFrame frame1m = new JFrame("Menu");
        frame1m.setContentPane(panelm);
        panelm.setLayout(new GridLayout(2, 1));
        frame1m.setBounds(300,100,400,500);
        frame1m.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame1m.setVisible(true);
        buttonD.addActionListener(new ButtonEventListener1()); //доход
    }
    class ButtonEventListener1 implements ActionListener {    //Создаём класс реализующий ActionListener
        public void actionPerformed(ActionEvent event)  //метод получающий событие(нажатие на кнопку)
        {
                JPanel panel = new JPanel();
                GridLayout gl = new GridLayout(3, 1);
                JLabel jl = new JLabel("Добавте доход");
                jl.setFont(new Font("a", Font.BOLD, 35));
                panel.add(jl);
                panel.add(input1D);
                input1D.setFont(new Font("1", Font.BOLD, 35));
                input1D.setText("");
                panel.add(button1D);
                button1D.setFont(new Font("A", Font.BOLD, 35));
                button1D.addActionListener(new ButtonEventListener01()); //отсылка, что доход добавлен
                JFrame frame1 = new JFrame("Добавление дохода");
                frame1.setContentPane(panel);
                frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                panel.setLayout(gl);
                frame1.setBounds(600,300,400,250);
                frame1.setVisible(true);
        }
    }
    class ButtonEventListener01 implements ActionListener {    //Создаём класс реализующий ActionListener
        public void actionPerformed(ActionEvent event)  //метод получающий событие(нажатие на кнопку)
        {
            massD[numD] = Integer.parseInt(input1D.getText());
            numD++;
            System.out.println(massD[numD]);
            JOptionPane.showConfirmDialog(null, "Доход добавлен", "Doxod",JOptionPane.CLOSED_OPTION);
        }
    }
}
Answer 1

Вы при каждом нажатии добавляете слушатель

button1D.addActionListener(new ButtonEventListener01());

каждый из слушателей открывает по одному окну.

READ ALSO
Грамотное API, underscoreCase, camelCase

Грамотное API, underscoreCase, camelCase

В vuejs мы создали объект для отправки, json, давая имена через camelCase

108
Обработка нажатий на клавиатуру Telegram Bot

Обработка нажатий на клавиатуру Telegram Bot

создаю клавиатуру для упрощения общения с пользователемНо не могу понять как обработать нажатие на кнопку из клавиатуры

101
Обнулить Final объект JFrame

Обнулить Final объект JFrame

Необходимо вернуть объект JFrame в изначальное состояние, который имеет тип final

136
Как добавить поле в коллекцию? MongoDB | NodeJS

Как добавить поле в коллекцию? MongoDB | NodeJS

Хочу добавить поле к уже существующей коллекцииИспользование finOne перезаписывает полностью всю коллекцию, а мне из иного участка кода нужно...

108