2014-09-07 2 views
-1

두 동일한 패키지의 클래스,자바는 다른 클래스에서

공공 정적 및 인스턴스 변수의 콤보를 가지고 메인 클래스를 내 메인 클래스의 메소드를 호출. instance이라는 클래스의 인스턴스를 만듭니다.

하위 클래스가 아닌 또 다른 클래스 Login은 업무용이지만 main에서 guiInstance 메서드를 호출하려고합니다.

문제는 내가 작동하지 않는 것 같아서 Login 클래스가 공개되어 있어도 "GUI"인스턴스 또는 클래스의 모든 메소드를 찾을 수 없습니다.

방금 ​​원하는 구성으로 새 패키지를 만들었고 분명히 메서드 호출 방법에 대한 잘못된 생각을 가지고 있습니다.

public class GUI { 

    JPanel jp = new JPanel(); 

    public static void main(String[] args) { 
     GUI instance = new GUI(); 
    } 

    public void ping(){ 
     System.out.println("that worked"); 
    } 
} 


public class Login extends JPanel { 

    /** Creates new form Login */ 
    public Login() { 
     initComponents(); 
    } 

    /** This method is called from within the constructor to 
    * initialize the form. 
    * WARNING: Do NOT modify this code. The content of this method is 
    * always regenerated by the Form Editor. 
    */ 
    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code"> 
    private void initComponents() { 

     jButton1 = new javax.swing.JButton(); 

     jButton1.setText("jButton1"); 
     jButton1.addMouseListener(new java.awt.event.MouseAdapter() { 
      public void mouseClicked(java.awt.event.MouseEvent evt) { 
       jButton1MouseClicked(evt); 
      } 
     }); 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); 
     this.setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addGap(112, 112, 112) 
       .addComponent(jButton1) 
       .addContainerGap(215, Short.MAX_VALUE)) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addGap(46, 46, 46) 
       .addComponent(jButton1) 
       .addContainerGap(231, Short.MAX_VALUE)) 
     ); 
    }// </editor-fold> 

    private void jButton1MouseClicked(java.awt.event.MouseEvent evt) { 
     instance.ping(); 
    } 


    // Variables declaration - do not modify 
    private javax.swing.JButton jButton1; 
    // End of variables declaration 

} 

답변

1

당신은 당신의 main() 방법에 GUI의 인스턴스를 가지고 있지만, 당신은 Login의 인스턴스를 생성하지 않는 것. 그게 내가 무언가가 아니다,에, 당신이 뭔가 같이 할 수 main()에 그런

private GUI gui = null; 
public Login(GUI gui) { 
    this.gui = gui; 
    initComponents(); 
} 

public static void main(String[] args) { 
    GUI instance = new GUI(); 
    Login login = new Login(instance); 
    // next I believe you need to make your Frame and components visible 
} 
+0

자리를 - 내가 좋아하는 뭔가를 추가 Login에, 그래서 당신이 당신의 Login 생성자에 GUI 인스턴스를 전달 제안 이전에는 해본 적이 없으며 Google에서 불가능하다고 판단되는 부분을 알지 못할 때 발생해야합니다. 그것 모두는 지금 아주 간단한 것처럼 보인다! 감사!!! – SimoneyHoney

+0

Nitpick : 확실히 정확하고 개인적으로, 나는 어떤 종류의 인터페이스를 Login에 전달하기를 원합니다. 로그인 할 필요가 없거나 액세스 할 수 있어야하는 GUI 요소를 노출하지 않기 위해서입니다. – MadProgrammer

+0

감사합니다. MadProgrammer에게 감사드립니다. 당신은 그것을 구현하기위한 코드 포인터가 있습니까? – SimoneyHoney