2016-08-27 2 views
1
private void close() { 

WindowEvent winClosing; 
winClosing = new WindowEvent(this,WindowEvent.WINDOW_CLOSING); 
Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(winClosing); 
} 

я пытаюсь закрыть предыдущую JFrame с помощью непосредственной функции, упомянутой выше, поместив этот код в задней кнопки выделены на картинке прилагаетсясистема выхода вместо JFrame закрытия

this.close(); 
    MainMenu obj = new MainMenu(); 
    obj.setVisible(true); 

проблема заключается в том, что Вышеприведенный код закрывает все мое приложение вместо того, чтобы закрывать раму, которая теперь активируется

enter image description here

+1

Пожалуйста, приложите усилия, чтобы сделать его более читабельным и понятным. Используйте заглавные буквы, завершайте предложение с периодом (.), И использование запятых (,) может многое помочь. Также опубликуйте [MCVE], чтобы облегчить вам помощь. – c0der

+0

Я думаю, что я более читабельна. Вы считаете [MCVE]? – c0der

ответ

0

Вот краткий демо (то, что я-я чернила), которые вы пытаетесь сделать.
Обращаем ваше внимание:
a. Я не думаю, что это правильный подход для достижения этой функциональности. Рассмотрите возможность использования JDialog или внутренних кадров для вторичных окон.
b. Посмотрите на это как пример MCVE. На самом деле было бы гораздо лучше продемонстрировать проблему, используя один вторичный фрейм вместо двух.

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent; 

import javax.swing.JButton; 
import javax.swing.JFrame; 

public class MainWindow extends JFrame { 

    private JFrame frame1, frame2; 

    public MainWindow() { 

     super("Main"); 

     //make 2 other frames 
     frame1 = new Frame1(this); 
     frame2 = new Frame2(this); 

     setSize(400, 300); 

     //add listener to quit if when window closes 
     addWindowListener(new WindowAdapter() { 
      @Override 
      public void windowClosing(WindowEvent arg0) { 

       System.exit(0); 
      } 
     }); 

     //add buttn top open one frame 
     JButton btnFrame1 = new JButton("Frame 1"); 
     btnFrame1.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent arg0) { 

       //make frame 1 visible 
       frame1.setVisible(true); 
       //make this invisible 
       setVisible(false); 
      } 
     }); 
     getContentPane().add(btnFrame1, BorderLayout.NORTH); 

     //add button to open a second frame 
     JButton btnFrame2 = new JButton("Frame 2"); 
     btnFrame2.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 

       //make frame 1 visible 
       frame2.setVisible(true); 
       //make this invisible 
       setVisible(false); 
      } 
     }); 
     getContentPane().add(btnFrame2, BorderLayout.SOUTH); 

     //make main frame visible 
     setVisible(true); 
    } 

    public static void main(String[] args) { 
     new MainWindow(); 
    } 

    public void showMain() { 

     //make this one invisible 
     frame1.setVisible(false); 
     frame2.setVisible(false); 

     //make main window visible 
     setVisible(true); 
    } 
} 


class Frame1 extends JFrame { 

    public Frame1(MainWindow mainWindow) { 

     super("Frame 1"); 
     setSize(300, 200); 

     //add listener to show main this window closes 
     addWindowListener(new WindowAdapter() { 
      @Override 
      public void windowClosing(WindowEvent arg0) { 

       mainWindow.showMain(); 
      } 
     }); 

     //add btn to hide this window and show main 
     JButton btnFrame1 = new JButton("Back"); 
     btnFrame1.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 

       mainWindow.showMain(); 
      } 
     }); 
     getContentPane().add(btnFrame1, BorderLayout.SOUTH); 
     getContentPane().setBackground(Color.CYAN); 

     //make it invisible 
     setVisible(false); 
    } 
} 

class Frame2 extends JFrame { 

    public Frame2(MainWindow mainWindow) { 

     super("Frame 2"); 
     setSize(300, 200); 

     //add listener to show main this window closes 
     addWindowListener(new WindowAdapter() { 
      @Override 
      public void windowClosing(WindowEvent arg0) { 

       mainWindow.showMain(); 
      } 
     }); 
     JButton btnFrame1 = new JButton("Back"); 
     btnFrame1.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 

       mainWindow.showMain(); 
      } 
     }); 

     //add btn to hide this window and show main 
     JButton btnMain = new JButton("Back"); 
     btnMain.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 

       mainWindow.showMain(); 
      } 
     }); 
     getContentPane().add(btnMain, BorderLayout.SOUTH); 
     getContentPane().setBackground(Color.YELLOW); 

     //make it invisible 
     setVisible(false); 
    } 
} 

Не стесняйтесь спрашивать о необходимости уточнений.

 Смежные вопросы

  • Нет связанных вопросов^_^