Java Swing; JFrame Popup - PullRequest
       7

Java Swing; JFrame Popup

4 голосов
/ 04 ноября 2010

У меня есть обратный вызов JMenuItem, который вызывает новый экземпляр производного класса JFrame.

Всякий раз, когда вызывается обратный вызов JMenuItem, исходное всплывающее окно не возвращается на передний план моего основного приложения. Вместо этого он создает новый экземпляр и новое всплывающее окно (так что существует два или более одинаковых производных класса).

Как мне сделать так, чтобы всегда было не более одного экземпляра производного класса?

1 Ответ

4 голосов
/ 04 ноября 2010

Если на самом деле никогда не должно быть более одного экземпляра вашего производного класса, вы можете сделать его Singleton , например,

public class MyFrame extends JFrame {
   private static MyFrame instance = null;
   private MyFrame() {
      // Private to prevent instantiation.
   }

   public static MyFrame getInstance() {
      if(instance == null) {
         instance = new MyFrame();
      }
      return instance;
   }
}

Вы просто вызываете MyFrame.getInstance(), когда вам нужно получить экземпляр, а не использовать новый, и вы будете получать один и тот же каждый раз (он будет создан в первый раз). например,

JFrame myFrame = MyFrame.getInstance();
// now call methods upon myFrame to make it pop up, etc.

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

public static void popUp() {
    JFrame myFrame = getInstance();
    // now call methods upon myFrame to make it pop up, etc.
}

Тогда вы можете просто позвонить MyFrame.popUp().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...