Java - 如何添加将使用初始类的gui

时间:2014-12-02 17:48:35

标签: java jbutton

我已经编写了一个包含多个类的标准控制台应用程序(Web抓取)。主要功能唯一的作用是: - 创建一个类的实例 - 从创建的对象中调用一个方法

现在我需要添加最简单的GUI,它将包含一个按钮来执行上述第二个操作(调用方法)和textarea,以显示NetBeans输出现在显示的所有内容。

我用GUI类创建了新文件。它基本上是一个带有jButton和jTextArea的jFrame。我设法让文本输出像我假设的那样工作。但是我不知道如何设置按钮。 Netbeans创建者将我重定向到这部分代码:

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

    p1.use(); // <<< my initial try
}

其中p1是在原始文件的主类中创建的对象。 Netbeans标志着&#34; p1&#34; as&#34;找不到符号&#34;这是可以理解的。但是,我怎样才能执行这么简单的操作呢?我基本上需要Button来推动程序。

2 个答案:

答案 0 :(得分:0)

您需要通过构造函数或setter将p1对象从主类传递到GUI的类中,否则它不知道您要访问的是什么。

例如,

public class MainClass {
    private MyGuiClass gui;
    private P1Class    p1;

    public static void main(String[] args) {
        p1  = new P1Class( /*arguments*/ );
        gui = new MyGuiClass( p1, /*other arguments*/ );
    }
    // Other logic...
}

public class MyGuiClass extends JFrame {
    private P1Class p1;
    public MyGuiClass( P1Class p1, /*other arguments*/ ) {
        this.p1 = p1;
    }
    // Other logic...
}

此时,您可以在代码的其余部分中引用p1对象。

答案 1 :(得分:0)

有很多方法可以实现这一目标。

情景1

使对象p1可以通过在Main类中保持静态来访问jFrame对象。

public class Main {
    public static P1 p1;

    public static void main(String[] args) {
        p1 = new P1();
        //open window etc.
    }
}

public class MyFrame extends JFrame {
    private void buttonActionPerformed(java.awt.event.ActionEvent evt) {
        // Access object by static reference
        Main.p1.use();
    }
}

场景2

您可以将对象P1作为参数传递给jFrame对象的构造函数。

public class Main {
    public static void main(String[] args) {
        P1 p1 = new P1();
        new MyFrame(p1);
        //open window etc.
    }
}

public class MyFrame extends JFrame {
    private P1 p1;

    public MyFrame(P1 param) {
        // Save object inside the JFrame object
        this.p1 = param;
    }

    private void buttonActionPerformed(java.awt.event.ActionEvent evt) {
        p1.use();
    }
}