Java GUI / OOP变量问题

时间:2015-03-08 15:14:44

标签: java user-interface

我刚接触在Java中使用GUI,所以我正在尝试调整我在控制台中编写的sat-n​​av系统,以便在gui中工作。 我已经设计了一个表单,我正在尝试获取程序,以便在单击按钮时它将从类访问一个函数 - 但是在JFrame类中,我遇到了尝试访问变量的问题我在主要创建。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:

        //graph.gatherData();
    }                                        

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */

        }

        //</editor-fold>
        Engine graph = new Engine();
        graph.addNode("Aberdeen", 391, 807);
        graph.addNode("Blackpool", 331, 434);
        graph.addNode("Bristol", 358, 173);
        graph.addNode("Cardiff", 319, 174);

在jButton1ActionPerformed函数中,我希望能够访问图形。我试图在别处定义它,但它不起作用。有人可以解释如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

因为main方法是静态方法。创建此类的实例,并在构造函数中创建Engine实例(并将其作为变量存储在类中)。

编辑:一些代码:

public class MyClass {
    private Engine graph;

    public MyClass(){
        graph = new Engine();
        graph.addNode("Aberdeen", 391, 807);
        graph.addNode("Blackpool", 331, 434);
        graph.addNode("Bristol", 358, 173);
        graph.addNode("Cardiff", 319, 174);
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:

        //graph.gatherData();
    }  

     /**
     * @param args the command line arguments
     */
    public static void main(String[] args){
         /* Set the Nimbus look and feel */

        //Create instance of your class (im assuming your jframe?)
        new MyClass();
    }
}