Как выводить в файл при правильных условиях с помощью mouseclicked и itemlistener

#java #if-statement #jcheckbox #mouseclick-event #itemlistener

#java #if-оператор #jcheckbox ( флажок ) #щелчок мышью-событие #itemlistener

Вопрос:

То, что я пытаюсь сделать, — это вывод в файл при нажатии кнопки Сохранить. У них есть 4 флажка, и им нужно выбрать один. когда они выберут один из них, он сообщит программе, какой из них они выбрали, и соответственно выведет следующее.

То, что у меня сейчас не работает, есть какие-нибудь идеи?

 JButton buttonSave = new JButton("Save");
        buttonSave.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {

                String name = whoSoldTo.getText();
                String test = sellPrice.getText();
                int soldToPrice = Integer.parseInt(test);

                checkboxMint.addItemListener(new ItemListener() {
                    @Override
                    public void itemStateChanged(ItemEvent ev) {
                    }
                });

                if(ev.getStateChange() == ItemEvent.SELECTED) {
                    write.soldToFile(name, "mint", soldToPrice);
                    System.out.println("Mint works");
                }

                checkboxTobacco.addItemListener(new ItemListener() {
                    @Override
                    public void itemStateChanged(ItemEvent e) {
                        if(e.getStateChange() == ItemEvent.SELECTED) {
                            write.soldToFile(name, "tobacco", soldToPrice);
                        }
                    }
                });

                checkboxFruit.addItemListener(new ItemListener() {
                    @Override
                    public void itemStateChanged(ItemEvent e) {
                        if(e.getStateChange() == ItemEvent.SELECTED) {
                            write.soldToFile(name, "fruit", soldToPrice);
                        }
                    }
                });

                checkboxCreme.addItemListener(new ItemListener() {
                    @Override
                    public void itemStateChanged(ItemEvent e) {
                        if(e.getStateChange() == ItemEvent.SELECTED) {
                            write.soldToFile(name, "creme", soldToPrice);
                        }
                    }
                });

            }
        });

        buttonSave.setBounds(227, 143, 117, 29);
        contentPane.add(buttonSave);

    }
}
 

Ответ №1:

Запишите все itemlisteners самостоятельно, т.е. вне mouseclicklistener . Объявите глобальные логические переменные для разных элементов, например, Bool fruits, для которых установлено значение false, и когда в itemlistener происходит событие, установите для него значение true. В onMouseClicklistener проверьте, какая логическая переменная имеет значение true, и выполните действие, связанное с элементом

Комментарии:

1. Я только что полностью избавился от кнопки сохранения и просто придерживаюсь флажков.