public class MainMDI extends javax.swing.JFrame {
private static MainMDI thiz;
public MainMDI() {
initComponents();
thiz = this;
}
}
Я создаю приложение MDI в разгаре. Класс MainMDI является основным классом приложения, поэтому основной метод находится в этом классе. Приведенный выше код создает статическую переменную с именем thiz, которая указывает на экземпляр класса MainMDI при запуске приложения.
Я планирую использовать переменную thiz для доступа к нестатическим (экземплярным) членам класса MainMDI из основного метода (я не могу получить доступ к нестатическим членам из основного метода, поскольку основной метод является статическим членом в классе MainMDI в моем приложении).
public class MainMDI extends javax.swing.JFrame {
private static MainMDI thiz = this;
public MainMDI() {
initComponents();
}
}
Но когда я пытаюсь инициализировать переменную thiz, как в приведенном выше коде, компилятор говорит, что это нестатическая переменная, на которую нельзя ссылаться из статического контекста. Но я не имею в виду это в статическом контексте, не так ли? Это потому, что переменная this, будучи нестатической, еще не инициализирована, когда инициализируется статическая переменная this?
Кроме того, была бы лучшая практика программирования, если бы я не установил класс MainMDI в качестве основного класса, а создал другой класс с основным методом в нем и установил этот класс в качестве основного класса?
JFrame
отдельно? - person class stacker   schedule 12.03.2013MainMDI
. Должна быть причина, почему вы хотите получить к нему доступ, чтобы иметь доступ к контексту, не так ли? Я думал, что контекст может быть объектомJInternalFrame
. -- В любом случае, решение за вами, мы все указали вам на некоторые способы сделать это так, как это должно быть сделано, так что наслаждайтесь, и я надеюсь, что у вас все получится. - person class stacker   schedule 12.03.2013