2015-12-31 9 views
-1

У меня есть три класса, первый класс создает окно на экране, и есть способ экранирования захвата содержимого поля. Во втором классе создается несколько ящиков, а в третьем классе есть jframe с кнопкой. Когда кнопка нажата, я хочу вызвать метод captureComponent, но только для одного определенного окна, которое было создано. Я новичок в Java, и я очень стараюсь понять, как я могу это достичь. Я смотрел на этот код несколько дней. Я думаю, что это будет что-то простое. Все индивидуальные занятия отлично работают, и в идеале организация класса должна оставаться такой, какая есть.вызов метода объекта из другого класса

Я создал следующий код, чтобы продемонстрировать проблему, которую я испытываю. Это упрощенное представление моего фактического кода, поскольку в противном случае это было бы слишком большим, чтобы надеть SO. Линия, с которой у меня возникают проблемы, - Box.a.captureComponent(); в классе Button. Каков правильный способ вызова метода одного конкретного объекта из другого класса?

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JButton; 

public class Box { 

    public Box() { 
     // Code to displays a transparent box on screen with a border 
    } 

    public void captureComponent() { 
     // This method screen captures whats displayed in the box 
    } 
} 



public class Object_Instantiate { 

     // In this class two boxes are created a & b    

     Box a = new Box(); 
     Box b = new Box();  

} 


public class Button { 

    /*In this class there is a button. When I press it I want to call 
    the captureComponent method but just for box a*/ 

    public static void main(String[] args) { 
     // Code to create JFrame with button would go here 

     btnSnap.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent event) { 
       JButton clickedButton = (JButton) event.getSource(); 
       if (clickedButton == btnSnap) { 

        //CaptureComponent method of just Box a  
        Box.a.captureComponent(); 

       }     
      } 
     }); 
    } 

} 

ответ

3

Box не имеет какого-либо статического a типа Box, так что вы не можете использовать Box.a.captureComponent();.

необходимо создать экземпляр Box, а затем вызвать captureComponent(), так как это метод экземпляра.

например:

Box b =new Box(); 
b.captureComponent(); 
+1

Спасибо, не совсем то, что я хотел, но сумел найти решение. Счастливого Нового года. – volican

0

Ok, в первую очередь вам нужно только одна главная функция, это та точка, где начинается ваша программа. Затем вы можете создавать объекты с Box BoxName = new Box(); в основном. После этого вы можете обращаться с объектом с помощью BoxName.captureComponent();

Возможно, полезно прочитать некоторые материалы о занятиях.

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