从另一个java类调用main方法类

时间:2012-02-15 04:50:00

标签: java function netbeans

我有两个java类。其中我的GUI编写,另一个类我实现了一个接口(称之为类2)。我的项目从GUI的主方法开始。我想发送一个字符串到我的类2中的GUI类,用于在文本区域中显示它,但没有发生任何事情。

我的主要gui课程是

           public class GraphicalInterface extends javax.swing.JFrame{
              //I have created a function over here for displaying string in text area

              public void show1(String name)
                {
                  jTextArea1.setText(name);

                 }

                   //buttons code
                         public static void main(String args[]) {
                  //code
                   }
            }

我在类2中创建了这个类的对象,如下所示

                    GraphicalInterface b=new GraphicalInterface();
                    b.show1("pear");// it does not allow me to write this statement

请帮帮我,我怎么能从另一个java类调用main方法类。谢谢。

4 个答案:

答案 0 :(得分:1)

您可能尝试在构造函数或方法(或初始化程序块)之外调用此代码,而在Java中,这是无法完成的。而是在方法或构造函数中调用此代码。

答案 1 :(得分:1)

我猜您的项目中存在设计问题。让我来表达。你说你有一个GUI类“GraphicalInterface”,它包含主要方法,它是Java中应用程序的起点。你说你需要在另一个类中调用这个类的main方法, “您的第2级”。如果是这样,为什么不是属于您尝试调用此GUI主要方法的应用程序的“主方法”的地方。调用GUI的main方法x(),让你调用x()的地方属于main方法。

如果你需要在另一个类的GUI字段上操作并且仍然保持main方法,那么我建议你将 Singleton Pattern 应用到你的GUI类。就这样你 将能够在您的应用程序中的任何地方引用您的公共单例类的唯一实例。

public class GraphicalInterface extends javax.swing.JFrame
{
              public String textAreaContent;

              public getX()( return textAreaContent;)
              public setX(String s)( this.textAreaContent = s;)

              public void show1()
              {
                  jTextArea1.setText(this.getTextAreaContent());
              }
              public static void main(String args[]) 
              {        
                 //code
              }
 }

来自您的其他班级:

 GraphicalInterface b=new GraphicalInterface();
 b.setX("text area content");
 b.show1();

答案 2 :(得分:0)

不,最好的解决办法就是不要这样做,如果你认为必须这样做,很可能是因为你的设计被某种方式打破了。而是编写代码,以便您的类是真正的OOP类,它们以智能方式交互(低耦合,高内聚),并且只需要一个主要方法。

另外,你说:

GraphicalInterface b=new GraphicalInterface();
b.show1("pear");// it does not allow me to write this statement

你是什么意思“它不允许我写这个声明”? Java编译器是否会出现编译错误? JVM是否会抛出异常? JVM是否伸出显示器并拍打你的脸?请告知我们为您提供帮助所需的所有详细信息。

答案 3 :(得分:0)

您需要在class2中创建一个方法,然后通过main方法调用该方法。

示例代码class1

public class Test1 {
    public void show(String ab){
        System.out.println(ab);
    }
    public static void main(String[] args) {
        Test2.Test2();
    }
}

上面的代码我创建了一个类Test1.java,就像你的class1一样,创建一个带有一个参数的方法,并从class2方法调用它。

示例代码class2

public class Test2 {
    static void Test2(){
        new Test1().show("Pass String to class1 show method");
    }
}

此处您可以传递string值。