Java всплывающее окно отправки нескольких действий - PullRequest
0 голосов
/ 03 февраля 2019

Первое всплывающее окно отправит только одно действие, второе отправит два, третье будет три, и так далее.Я смог сузить его до того, что это будет кнопка, отправляющая действие несколько раз.

Сначала я использовал jframe для всех окон, поэтому я попытался использовать jdialog, проблема сохраняется.попытался сделать так, чтобы, когда пользователь нажимал на кнопку, окно было расположено, все равно не исправить это.

public class BoothDetails extends JDialog implements ActionListener{

    FloorPlanGUI floorPlan = new FloorPlanGUI();

    static JLabel bname = new JLabel();
    JTextArea details = new JTextArea();
    static JButton addsche = new JButton("ADD TO SCHEDULE");
    JPanel northPanel = new JPanel();

    public BoothDetails(String name, String detail) {
        setVisible(true);
        setSize(300, 200);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        bname.setText(name);
        details.setText(detail);

        setLayout(new BorderLayout());
        northPanel.setLayout(new FlowLayout(0, 10, 10));
        northPanel.add(bname);
        northPanel.add(addsche);
        addsche.addActionListener(floorPlan);
        addsche.addActionListener(this);

        add(northPanel, BorderLayout.NORTH);
        add(details, BorderLayout.CENTER);
    }

    public void actionPerformed(ActionEvent a) {
        dispose();
    }
}

1 Ответ

0 голосов
/ 03 февраля 2019
static JLabel bname = new JLabel();
JTextArea details = new JTextArea();
static JButton addsche = new JButton("ADD TO SCHEDULE");

Не используйте ключевое слово static.Это означает, что переменная является общей для всех экземпляров класса.

Так что каждый раз, когда вы создаете новый экземпляр класса, вы выполняете следующий код:

addsche.addActionListener(floorPlan);

, который добавляет еще один ActionListener ккнопка.

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

...