2014-04-11 1 views
0

내부 프레임을 열고, 나는이 내 메인 프레임, 내부 프레임은 2 개 클래스, 내가 데스크탑 구획 및 이름 바탕 화면이내가 어떻게이 메인 프레임의 새로운 internalframe을 열

DisplayInternalFrame aDisplay = new DisplayInternalFrame(name, surname); 
    desktop.add(aDisplay); 
    aDisplay.setMaximum(true); 
    aDisplay.show() 

있다가 응용 프로그램이 실행될 때,로드

내 테이블 이름은 errorTable

지금 내 2 등석, 그것은, 내가 사람들이 테이블 항목을 누르면 새로운 내부 프레임을 열 테이블 internalframe 원하는 가지고있다 이다

private void errorTableMouseClicked(java.awt.event.MouseEvent evt) { 

errorInternalFrame acceptFrame = new errorInternalFrame(); 

desktop.add(acceptFrame); 

드 sktop은 클래스 1에 있기 때문에 내부 프레임의 테이블에 항목을 푸시하거나 새 내부 프레임을 열거 나 이와 비슷한 내용을 기본적으로 표시 할 때 내부 프레임 이벤트 인

에 기본적으로 접근 할 수 없습니다.

답변

0

은 당신이 할 수있는 것은 addToDesktop

로하는 방법과 interface을 만드는 것입니다 "바탕 화면은 내가 internalframe 이벤트 오전 1 그래서 지금 사촌 바탕 화면에 도달하지 못할 클래스에있다"
public interface AddableDesktop { 
    public void addToDesktop(); 
} 

그런 다음 바탕 화면에 클래스에 구현 그것을

public class Main extends JFrame implements AddableDesktop { 
    private JDesktopPane desktop; 

    @Override 
    public void addToDesktop() { 
     errorInternalFrame acceptFrame = new errorInternalFrame(); 
     desktop.add(acceptFrame); 
     acceptFrame.setVisible(true); 
    } 
} 

또한 인스턴스 (AddableDesktop의 인스턴스 임)를 DisplayInternalFrame에 전달해야합니다. 그런 다음 addToDesktop 방법으로 전화 할 수 있습니다. 당신이 당신의 Main 클래스의 DisplayInternalFrame를 만들 때

public class DisplayInternalFrame extends JInternalFrame { 
    private AddableDesktop addableDesktop; 

    public DisplayInternalFrame(String name, String surname, AddableDesktop ad) { 
     this.addableDesktop = ad; 
    } 

    ... 
    private void errorTableMouseClicked(java.awt.event.MouseEvent evt) { 
     addableDesktop.addToDesktop(); 
    } 
} 

, 당신은 생성자에 Main 인스턴스를 전달합니다

이것은 정확한 당신이 찾고있는 설정,하지만되지 않을 수 있습니다
DisplayInternalFrame aDisplay = 
        new DisplayInternalFrame(name, surname, Main.this); 

그 한 클래스에서 다른 클래스로 기능을 제공하는 방법을 보여줍니다.

+0

도움을 주셔서 감사합니다. 인터페이스를 사용하려고합니다. – mtrsykl

관련 문제