저는 Swing을 사용하는 Java 응용 프로그램을 개발 중입니다. 나는이처럼되는 JDialog를 확장하는 클래스가 있습니다JDialog (또는 일반적으로 다른 클래스)를 확장하는 클래스의 인터페이스를 만드는 방법
지금 그것을위한 인터페이스를 만들 수있는 방법 (권장) 무엇public class customDialog extends JDialog {
//Custom buttons listeners etc.
}
? 내가 작성합니다
public interface customDialogInterface {
//Custom methods signatures
}
을 한 후 사용 나는이 JDialog의 메소드에 액세스 할 수 없습니다 내 코드에서 customDialogInterface를 사용할 때 customDialog에 있지만,이 방법으로 "customDialogInterface을 구현". 기타 정보 JDialog는 클래스이므로 인터페이스에서 확장 할 수 없습니다. 게다가 JDialog가 구현 한 인터페이스로 customDialogInterface를 확장 할 수 없습니다. 그 중 하나가 패키지로 보호되어 있기 때문입니다.
(내가 가정 한) 사례를 진행하는 올바른 방법은 무엇입니까?
UPDATE 1 : 내 질문을 재구성 더 설명하려고합니다. "구체적인 클래스가 아닌 인터페이스를 사용하는 프로그램"을 알려주는 프로그래밍 원칙이 있습니다. 그것을 바탕으로 내 CustomDialog에 대한 인터페이스를 어떻게 만들 수 있습니까? 내가 할 경우 CustomDialog를 사용하는 코드보다
public interface CustomDialogInterface {
public void doA();
public void doB();
}
나는이 :
CustomDialogInterface myDialog = new CustomDialog();
myDialog.doA(); //OK
myDialog.doB(); //OK
myDialog.setVisible(true); //ERROR
UPDATE 2 : 다시 내 질문을 업데이트하기로 결정 답변을 내놓고 것은이 있다는 것 때문에 그것은 분명하지 않습니다. 아직 실제 코드가 아니기 때문에 정보가 많지 않습니다. 이론적 인 질문 일뿐입니다. 등, 내 정보와 JDialog를 필요 내 응용 프로그램에서
을 필드를 내가 그것을 어떻게 얻을 수 있습니다 : 아직 가능한 해결책을 발견하는 경우 또한 나는 다른 형태로 다시 여기에 쓰기? 클래스 정의 :
클래스 MyImplementation이 JDialog를 확장 이제
{ 공공 DOA (문자열 TXT를) { 가 //이 내 구현 } 의 구체적인 방법은}, 나는 규칙을 따르십시오 좋은 프로그래밍 "구현에 의한 것이 아니라 인터페이스에 의한 프로그램"그래서 내 사용자 정의 대화 상자에 대한 인터페이스가 필요합니다.
interface InterfaceForMyDialog { public doA (String txt); }
는 Obiously 클래스 MyImplementation 난 그냥 추가 위의 의사를 변경할 수 있도록 인터페이스를 구현해야하고
클래스 MyImplementation이되는 JDialog는 InterfaceForMyDialog { 공공 DOA (문자열 TXT) {// 이것은 를 구현 확장 구현 이제 내 구현 } }
하는 방법의 특정 마침내 나는이 같은 (main 메소드의 어딘가에 가정 해 봅시다) 외부 코드에서 나의 새로운 대화 어딘가를 사용해야합니다 :
... InterfaceForMyDialog myDialogInterface = new MyImplementation (...);
질문 : 어떻게 위의 코드를 작성해야합니다 "DOA (문자열 TXT를)"방법을 사용하여 내 사용자 정의 대화 상자로 텍스트를 설정 한 다음 대화 자체를 보여? 이 구조체를 사용하는 것은 불가능하다고 생각하며 추상 클래스를 사용하여 해결책을 찾았습니다 (아래 참조). 내가 틀렸거나 더 좋은 해결책이 있다면 여기에 적어주세요.
무엇이 오류입니까? 복사하여 여기에 붙여 넣으십시오. 컴파일 오류입니까? – arcy
[상속] (https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html)을 살펴보십시오.귀하의 제한된 정보를 바탕으로 나는 인터페이스를 구현하고 대화 상자를 확장하지 말 것을 제안합니다. Andrew가 설명한대로 – MadProgrammer