【发布时间】:2011-10-13 21:22:11
【问题描述】:
我有一个 MyClass 类,它在运行时通过调用 GUI 的 main 方法来初始化 GUI awt 框架(“Launch.java”)。 在这个主要方法中,我有 EventQueue.invokeLater,它的 runnable 实际上做了所有的初始化。初始化的一部分是设置一个名为“controller”的对象。
从MyClass调用GUI的main方法后,想getController()控制器,结果返回null,不知道为什么。
当我调试它时,我在 Launch.java 中的创建控制器的行上放置了一个断点 (controller = new Controller(textArea)),我注意到它当时不为空,但是回到 MyClass 中,当我调用 Launcher.getController() 时它为空。
我做错了什么??谢谢!
我的班级:
public class MyClass{
private static boolean isInitialized = false;
private Controller control;
public static void main(String[] args){
if (!isInitialized)
{
Launch.main(new String[1]);
control = Launch.getControl(); //here control is null!
isInitialized = true;
}
//irrelevant code here
}
}}
Launch.java:
public class Launch {
private JFrame frame;
private JTextField inputField;
DefaultListModel model;
private static Controller controller;
JSpinner spinner;
public static Controller getControl()
{
return controller;
}
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Launch window = new Launch();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Launch() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
//some code here... (here controller is null)
controller = new Controller(textArea);
//some code here... (here controller is not null - during debug)
}
}
【问题讨论】:
-
我对 _controller 与控制器感到困惑。您发布的这段代码是否可编译?
-
另外,为什么控制器变量是静态的?
-
另外,为什么要在 servlet 中嵌入 GUI?
-
@Hovercraft Full Of Eels:我编辑了 _controller/controller 错误
-
您仍然需要回答另外两个关于不恰当使用静态和将 Swing 与 Servlet 混合的问题。
标签: java multithreading user-interface awt