Удаление JFrame из другого класса - PullRequest
2 голосов
/ 19 августа 2011

Как я могу избавиться от JFrame из другого класса? Мой код указан ниже.

public class MainWindow

{

JFrame main_f = new JFrame("xx");
main_f.getContentPane().setLayout(new BorderLayout());
main_f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
.
.
.
}

Класс утилизации:

public static void DisposingJFrame (){
.
.
.
MainWindow.main_f.dispose();
}

MainWindow.main_f.dispose() не будет работать, потому что main_f не является переменной. Вы можете мне помочь?

Ответы [ 3 ]

2 голосов
/ 19 августа 2011

Предложение

Сделайте экземпляр JFrame полем класса MainWindow и предоставьте для него метод доступа .

public final class MainWindow{
    private final JFrame main_f;

    public MainWindow(){
        main_f = new JFrame("xx");
        main_f.getContentPane().setLayout(new BorderLayout());
        main_f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        .
        .
        .
    }

    public final JFrame getMainFrame(){
        return main_f;
    }
    .
    .
    .
}

А затем в классе Disposing у вас должен быть экземпляр MainWindow, где вы просто выполните следующее, чтобы избавиться от его экземпляра JFrame:

mainWindowInstance.getMainFrame().dispose();

Рекомендация


Редактировать

Это для устранения ошибок, которые вы видите:

  1. переменная main_f, возможно, не была инициализирована
  2. не может найти символ "mainWindowInstance"

Что касается первой ошибки, то это потому, что в приведенном мною примере я использовал модификатор final. Это поле должно быть инициализировано при создании объекта. Следовательно, вы должны иметь более одного конструктора. Для решения этой проблемы либо удалите модификатор final, либо инициализируйте поле main_f в каждом конструкторе MainWindow.

Что касается второй ошибки, mainWindowInstance - это то, что я оставил для , которую вы создали. Вот "например" -

public class Disposing{
    private MainWindow mainWindowInstance;

    public Disposing(){
        mainWindowInstance = new MainWindow();
        .
        .
        .
    }

    public void diposeMainFrame(){
        mainWindowInstance.getMainFrame().dispose();
    }
}
0 голосов
/ 28 апреля 2016

Есть самый простой способ сделать это.Код Java для удаления JFrame класса из другого класса выглядит следующим образом:

public class Main extends JFrame
{
  Main()
  {
    Main x=new Main();
    Other.a=x;
  }
}

public class Other extends JFrame
{
   static Main a;

   Other()
   {  
      a.dispose();
    }
}
0 голосов
/ 19 августа 2011

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

НО, это не шаблон объекта. Вместо этого сделайте следующее:

  • превратит ваше главное окно в одиночный
  • сделайте ваш main_f полем вашего главного окна
  • вызов MainWindow.getInstance (). GetFrame (). Dispose ()

Другой способ - предоставить DisposingJFrame экземпляр MainWindow (например, вам не нужно объявлять MainFrame как одиночный)

...