2012-02-15 92 views
2

我有我的哪个GUI是写两个Java classes.One和住在我所实现的接口的其他类中调用main方法类(称之为类2)。我从项目的主要方法开始GUI.I想从类2向我的GUI类发送一个字符串,以便在文本区域显示它,但没有任何事情发生。从另一个Java类

作为我的主要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类。谢谢。

+0

“//它不允许我写这句话”这是什么意思?你是否收到编译错误?如果是,那么请告诉我们 – Sap 2012-02-15 04:58:36

+0

你能提供2级代码吗?你究竟在哪里执行这两个stmts? – Rocky 2012-02-15 05:18:17

+0

@Grrrrr:当我写b。并等待功能出现从中我可以选择秀王,但秀王没有出现 – Xara 2012-02-15 06:51:48

回答

0

没有,最好的办法是不要做这个,如果你觉得你必须,这可能是因为你的设计以某种方式打破。相反,编写代码以便您的类是真正的OOP类,它们以智能方式进行交互(低耦合,高内聚性),并且只需要一种主要方法。

而且,你的状态:

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

你说的“这并不让我写这个说法”是什么意思? Java编译器是否给出编译错误? JVM是否会抛出异常? JVM是否伸出你的显示器并将你打在脸上?请让我们知道所有必要的细节,以帮助你。

+0

b。并等待函数出现,从中我可以选择show1但show1不出现 – Xara 2012-02-15 05:03:25

+0

@Zara:检查你没有两个版本的GraphicalInterface类,或者你没有删除所有以前的类文件和重新编译所有文件。但是,解决方案绝对不是**,可以称为两个类别的主要方法。目前,你不仅在错误的树上狂吠,而且在完全不同的森林中错误地树起树。 – 2012-02-15 05:07:52

+0

我刚刚有1个版本的GraphicalInterface类,我还没有删除以前的类文件.. :( – Xara 2012-02-15 05:48:01

1

您可能试图调用构造函数或方法(或初始化块)之外,并在Java中的代码,这个不能做。而是在方法或构造函数中调用此代码。

+0

我认为你的东西,你的答案是正确的。我希望你不介意我的编辑清晰。对于许多英语不是第一语言,所以我们尽量鼓励海报以避免使用非标准的缩写,而是写出来的全英文句子的答案。 – 2012-02-15 05:23:51

+0

@HovercraftFullOfEels并非所有..谢谢编辑我的职务 – 2012-02-15 05:29:25

+0

@ NIVESH SENGAR:你说我必须在类2中创建一个构造函数来调用GraphicalInterface的方法吗? – Xara 2012-02-15 05:49:27

1

我猜你在你的项目中的设计问题。让我展开。你说你有一个GUI类“GraphicalInterface”持有这在Java的应用程序的出发点的主要方法。你说你需要在另一个课程中调用这门课程的主要方法, “你的课程2”。如果是这样,为什么不属于“主要方法”应用程序的在你试图调用该GUI的主要方法的地方。调用GUI的主要方法x(),让你调用x()的地方属于主要方法。

如果您需要在其他类的GUI字段上操作并且仍然保留主要方法,那么我建议您将单例模式应用于您的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(); 
+0

我的结果来到类2,我想要显示在textarea,其代码我已经写在GraphicalInterface类。 – Xara 2012-02-15 05:52:54

+0

所以你应该把文本的公共方法(getter和setter)放在textarea中显示。您可以从您的课程2中设置此文本,然后将其设置为您的GUI类中的文本字段。我正在添加我的答案一些片段。 – Juvanis 2012-02-15 05:56:57

+0

@ superdeporter:请你详细说明一下,我将如何应用getter和setter方法。 – Xara 2012-02-15 06:48:58

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值。