2012-02-15 3 views
2

У меня есть два класса java.One, в котором написан мой графический интерфейс, а другой класс, в котором я реализовал интерфейс (называйте его классом 2). Мой проект начинается с основного метода GUI. Я хочу отправить строку в мой класс GUI из класса 2 для отображения ее в области «Текст», но ничего не происходит.Вызов основного класса метода из другого класса java

Как мой основной класс ГИП

  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

+0

вы можете предоставить код 2-го класса? где именно вы выполняете эти 2 stmts? – Rocky

+0

@Grrrrr: когда я пишу b. и ждать появления функций, из которых я могу выбрать show1, но show1 не отображается – Xara

ответ

0

Нет, лучшее решение не для этого, и если вы считаете, что это необходимо, это, скорее всего, потому, что ваш дизайн как-то сломан. Вместо этого напишите свой код, чтобы ваши классы были истинными классами ООП, которые взаимодействуют разумным образом (низкое сцепление, высокая сплоченность) и требуют только одного основного метода.

Кроме того, вы заявляете:

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

Что вы имеете в виду «это не позволяет мне писать это заявление»? Предоставляет ли компилятор Java ошибку компиляции? Вызывает ли JVM исключение? Подходит ли JVM к вашему монитору и ударит вас по лицу? Пожалуйста, сообщите нам все подробности, необходимые, чтобы помочь вам.

+0

когда я пишу b. и ждать появления функций, из которых я могу выбрать show1, но show1 не отображается – Xara

+0

@ Zara: Убедитесь, что у вас нет двух версий класса GraphicalInterface или что вы не удалили все предыдущие файлы классов и перекомпилировал все файлы. Но решение наиболее определенно ** не ** для вызова основного метода из двух классов. В настоящее время вы лаяете не только неправильное дерево, но и неправильное дерево в совершенно другом лесу. –

+0

У меня только 1 версия класса GraphicalInterface, и я не удалил предыдущие файлы классов .. :( – Xara

1

Возможно, вы пытаетесь вызвать этот код вне конструктора или метода (или блока инициализатора) и в Java, это невозможно. Вместо этого вызовите этот код внутри метода или конструктора.

+0

Я думаю, что вы на что-то, что ваш ответ правильный. Надеюсь, вы не против моего редактирования для Я не уверен, что для многих английский язык не является первым, поэтому мы стараемся поощрять плакаты, чтобы избежать использования нестандартных сокращений, но вместо этого выписывать ответы в полном объеме английских предложений. –

+0

@HovercraftFullOfEels Совсем нет .. Спасибо за редактирование моего сообщения –

+0

@ NIVESH SENGAR: вы говорите, что мне нужно создать конструктор в классе 2 для вызова метода GraphicalInterface? – Xara

1

Я предполагаю, что у вас есть проблема с дизайном в вашем проекте. Позвольте мне остановиться. Вы говорите, что у вас есть GUI-класс «GraphicalInterface», который содержит основной метод, который является отправной точкой приложения на Java. Вы говорите, что вам нужно вызвать основной метод этого класса в другом классе, «ваш класс 2». Если да, то почему это не место, относящееся к «основному методу» вашего приложения, в котором вы пытаетесь вызвать основной метод этого GUI. Вызовите основной метод GUI x(), пусть место, которое вы называете x(), принадлежит основному методу.

Если вам нужно работать с полями GUI в других классах, а также сохранить основной метод, я предлагаю вам применить Singleton Pattern к вашему графическому интерфейсу. Таким образом, вы получите единственный экземпляр вашего общедоступного одноэлементного класса в своем приложении.

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

+0

Итак, вы должны поместить публичные методы (getter и setter) для текста, который должен отображаться в textarea. Вы можете установить этот текст из своего класса 2, а затем установить его в текстовое поле в вашем графическом интерфейсе. Я добавляю свой ответ в некоторый фрагмент. – Juvanis

+0

@ superdeporter: Могу ли вы, пожалуйста, уточнить, как я применим методы getter и setter в моем случае. – Xara

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.

Смежные вопросы