Как закрыть окно JFrame, не закрывая другое?JAVA

Программисты JAVA общаются здесь
Anonymous
Как закрыть окно JFrame, не закрывая другое?

Сообщение Anonymous »

Я новичок в Java Swing и пытаюсь научиться закрывать один кадр, не закрывая другой, с помощью кнопки. Например, у меня есть фрейм1/окно, в котором есть только кнопка входа в систему. Как только я нажимаю кнопку входа в систему, появляется другое окноframe2. На фрейме 2 у меня есть только образец JLabel «Привет и добро пожаловать», кнопка «Выход». Я хочу иметь возможность нажать кнопку «Выход» в кадре 2, и окно кадра 2 должно закрыться, но окно кадра 1 все еще будет открыто. Я попробовал setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE), но это сработает, только если я нажму на значок x в правом верхнем углу окна Frame2. Кто-нибудь знает способ закрыть рамку при нажатии на кнопку?
public class Frame1 extends JFrame implements ActionListener{

private static JButton login = new JButton("Login");
private static JFrame f = new JFrame("Login");

Frame1(){

f.setSize(1000,750);
f.setLocation(750, 250);

login.setBounds(250, 350, 150, 30);

f.add(login);
f.setLayout(null);
f.setVisible(true);
login.addActionListener(this);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public void actionPerformed(ActionEvent e){

if (e.getSource() == login){

Frame2.frame2windown();
}
}

public static void main(String [] args){

Frame1 login1 = new Frame1();
}
}

public class Frame2 extends JFrame implements ActionListener{

private static JButton logout = new JButton("Logout");
private static JLabel jb1 = new JLabel ("Hello And Welcome");
private static JFrame f = new JFrame("Log Out");

Frame2(){

f.setSize(1000,750);
f.setLocation(750, 250);

jb1.setBounds(250, 150, 350, 30);

logout.setBounds(250, 350, 150, 30);

f.add(logout);
f.add(jb1);
f.setLayout(null);
f.setVisible(true);

logout.addActionListener(this);

f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

}

public void actionPerformed(ActionEvent a){

if(a.getSource() == logout){

dispose();
WindowEvent closeWindow = new WindowEvent(this, JFrame.DISPOSE_ON_CLOSE);
Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(closeWindow);

}

}

public static void frame2windown(){

Frame2 f2 = new Frame2();

}
}


Подробнее здесь: https://stackoverflow.com/questions/700 ... nother-one

Вернуться в «JAVA»