JFrameに問題があります。私がしたいのは、ボタン付きのログイン用のJFrameを作成することと、ボタンを押すとログインフレームを閉じてプログラムフレームを開くことだけです。Java JFrameはすべてのフレームを閉じることができません
これは私のログインフレームです:
public static void main(String[] args) {
JFrame frame = new JFrame("My Program");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
LoginPanel primary = new LoginPanel(frame);
frame.setPreferredSize (new Dimension (650, 500));
frame.getContentPane().add(primary);
frame.pack();
frame.setVisible(true);
}
コンストラクタにフレームを渡すことによって、ログインパネルを開き、ログインパネル:
:
public class LoginPanel extends JPanel {
JFrame fr;
class submitButton implements ActionListener {
public void actionPerformed(ActionEvent e) {
ProgramFrame programFrame = new ProgramFrame();
programFrame.setVisible(true);
fr.setVisible(false);
fr.dispose();
}
}
public LoginPanel(JFrame frame) {
fr = frame;
JButton submit = new JButton("Button Login");
submit.addActionListener(new submitButton());
add(submit);
}
これは問題ですLoginPanelのボタン "ボタンログイン"をクリックすると、新しいProgramFrameが正常に開きますが、すべての古いフレーム(LoginFrame)で閉じることはありません。 LoginFrameは小さく、非常に少ないとなりますが、残り:助けを事前に
ありがとう! :)
「CardLayout」を使用して1つのフレームのみを使用して、異なるパネルを切り替えることをお勧めします。 'EventQueue.invokeLater'を使ってあなたのスイングコードをEDTに掲示する必要があります。 'ProgramFrame'クラスを教えてください。 –
私はほとんどあなたにUbuntuを使用するための+1を与えました;) – khandelwaldeval
1)[複数のJFramesの使い方、良い/悪い練習を参照](http://stackoverflow.com/q/9554636/418556)2)より良いヘルプ早く、[MCVE]または[短く、自己完結型、正しい例](http://www.sscce.org/)を投稿してください。 –