Несколько раз открывается окно JDialog

207
07 февраля 2018, 12:32

1 класс

public class AllHistory extends JFrame {
static int n = 0;
    static JButton b1_1 = new JButton(new ImageIcon("100.png"));
    static JButton b2_1 = new JButton(new ImageIcon("100.png"));
}
public AllHistory(String s){
        super(s);
        setExtendedState(JFrame.MAXIMIZED_BOTH);   
        setUndecorated(true);
JPanel panel = new JPanel(null);
        panel.add(b1_1);
        b1_1.addActionListener(new ButtonEventListener());
        b1_1.setSize(200, 80);
        b1_1.setLocation(350,10);
        panel.add(b2_1);
        b2_1.addActionListener(new ButtonEventListener());
        b2_1.setSize(200, 80);
        b2_1.setLocation(350,109);
class ButtonEventListener implements ActionListener{
        public void actionPerformed(ActionEvent e){
            Who w = new Who(null);
if(e.getSource()==b1_1){
            w.setVisible(true);// появляется диалоговое окно с 3 кнопками
            b_1 b1 = new b_1();// закрывается диалоговое окно
            b1.setVisible(true);// открывается другой класс
            setVisible(false);// закрывается menu
            b1_1.setEnabled(false);// кнопка становится неактивной
}
if(e.getSource()==b2_1){
    w.setVisible(true); // появляется диалоговое окно с 3 кнопками
    b_2 b2 = new b_2(); // закрывается диалоговое окно
    b2.setVisible(true); // открывается другой класс
    setVisible(false); // закрывается menu
    b2_1.setEnabled(false); // кнопка static b1_1 становится неактивной
            }
        }
    }
}

2 класс(куда перешли после menu)

public class b_1 extends JFrame{
    JButton button = new JButton();
    JButton button_b1 = new JButton();
    JButton button_0 = new JButton();
    JRadioButton r_1 = new JRadioButton("а");
    JRadioButton r_2 = new JRadioButton("b");
    JRadioButton r_3 = new JRadioButton("c");
    JRadioButton r_4 = new JRadioButton("d");
    }
    public b_1() {
        super();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setExtendedState(JFrame.MAXIMIZED_BOTH);   
        setUndecorated(true);
        JPanel panel = new JPanel(null);
        panel.setLayout(null);
        panel.add(button);
        panel.add(button_b1);
        panel.add(button_0);
        panel.add(r_1);
        panel.add(r_2);
        panel.add(r_3);
        panel.add(r_4);
        //panel.add(screen);
        ButtonGroup group = new ButtonGroup();
        group.add(r_1);
        group.add(r_2);
        group.add(r_3);
        group.add(r_4);
        button.addActionListener(new ButtonEventListener());
        button_0.addActionListener(new ButtonEventListener());
        button.setSize(420, 115);
        button.setLocation(948,656);
        button_b1.setSize(420, 115);
        button_b1.setLocation(948,656);
        button_0.setSize(420, 115);
        button_0.setLocation(-6,656);
        r_1.setSize(250, 50);
        r_1.setLocation(1024,400);
        r_2.setSize(250, 50);
        r_2.setLocation(1024,460);
        r_3.setSize(250, 50);
        r_3.setLocation(1024,520);
        r_4.setSize(250, 50);
        r_4.setLocation(1024,580);
        setContentPane(panel);
    }
    class ButtonEventListener implements ActionListener{
        public void actionPerformed(ActionEvent e){
            menu x = new menu(null);
            if(r_4.isSelected()){
                if (e.getSource()==button){
                    switch(menu.n){
                    case 1:
                    menu.a+=100;
                    break;
                    case 2:
                    menu.b+=100;
                    break;
                    case 3: 
                    menu.c+=100;
                    break;
                    }
                    x.setVisible(true);
                    dispose();
                }}else if(r_2.isSelected()){
                if (e.getSource()==button);
                x.setVisible(true);
                dispose();
            }else if(r_3.isSelected()){
                if (e.getSource()==button){
            x.setVisible(true);
            dispose();
                }}else if(r_1.isSelected()){
                    if (e.getSource()==button){
                x.setVisible(true);
                dispose();  
                }
            }
            if (e.getSource()==button_0){
                    x.setVisible(true);
                    dispose();
            }
        }
    }
}

3 класс аналогичен 2, а вот 4 класс, тот самый JDialog

public final class Who extends JDialog{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    JButton b1 = new JButton("a");
    JButton b2 = new JButton("b");
    JButton b3 = new JButton("c");
    public Who(JFrame owner) {
        super(owner, "", true);
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        setSize(305,125);
        setResizable(false);
        setLocationRelativeTo(null);
        setUndecorated(false);
JPanel panel = new JPanel();
panel.add(b1);
b1.addActionListener(new ButtonEventListener());
panel.add(b2);
b2.addActionListener(new ButtonEventListener());
panel.add(b3);
b3.addActionListener(new ButtonEventListener());
add(panel);
    }
    class ButtonEventListener implements ActionListener{
        public void actionPerformed(ActionEvent e){
            if (e.getSource()==b1){
                AllHistory.n = 1;
                dispose();
            }
            if (e.getSource()==b2){
                AllHistory.n = 2;
                dispose();
            }
            if (e.getSource()==b3){
                AllHistory.n = 3;
                dispose();
            }
        }
    }
}

Думаю проблемы в объявлении menu, убрал лишнее стало открываться на 2-3 окна меньше, но при многократном нажатии на кнопки в menu число открываемых JDialog окон всё растет и растет

Я самоучка и поэтому прошу строго не судить мои каракули))

READ ALSO
сделать только один активный accordion jquery ui

сделать только один активный accordion jquery ui

Сделал аккордеон с помощью jQuery UI, непонятно почему, но не могу добиться, чтобы при открытии одного аккордеона остальные сворачивалисьНа странице...

220
Вылазит при добавлении .prepend()

Вылазит при добавлении .prepend()

Собственно попытался сам написать адаптивное меню, программирование знаю не очень хорошо

232
Как правильно получить значение scrollTop?

Как правильно получить значение scrollTop?

При достижении определённого значения скрола в блоке, должно выполняться какой то кодНо он не работает

209