gpt4 book ai didi

java - 如何为扩展 JDialog 的类(或通常另一个类)创建接口(interface)

转载 作者:行者123 更新时间:2023-12-02 03:34:15 24 4
gpt4 key购买 nike

我正在开发一个使用 Swing 的 Java 应用程序。我有一个扩展 JDialog 的类,如下所示:

public class customDialog extends JDialog {
//Custom buttons listeners etc.
}

现在为其创建界面的方式(最佳实践)是什么?我会写:

public interface customDialogInterface {
//Custom methods signatures
}

然后在customDialog中使用“实现customDialogInterface”,但是以这种方式,当我在代码中使用customDialogInterface时,我无法访问JDialog方法。否则 JDialog 是一个类,所以我无法在我的界面中扩展它。此外,我无法使用 JDialog 实现的接口(interface)扩展 customDialogInterface,因为其中之一是受包保护的。

在这些(我认为是常见的)情况下,正确的处理方式是什么?

<小时/>

更新1:我将尝试更好地解释我的问题。有一个编程原则告诉我们“使用接口(interface)而不是具体类进行编程”。基于此,我如何为我的 CustomDialog 创建界面?如果我这样做:

public interface CustomDialogInterface {
public void doA();
public void doB();
}

与使用 CustomDialog 的代码相比,我有:

CustomDialogInterface myDialog = new CustomDialog();
myDialog.doA(); //OK
myDialog.doB(); //OK
myDialog.setVisible(true); //ERROR
<小时/>

更新2:我决定再次更新我的问题,因为根据答案似乎不太清楚。它没有太多信息,因为它还不是真正的代码,它只是一个理论问题。另外,如果我还找到了可能的解决方案,我会以另一种形式再次写在这里:

  1. 在我的应用程序中,我需要一个包含我的信息、字段等的 JDialog。我怎样才能获得它?定义一个类:

    类 MyImplementation 扩展 JDialog { 公共(public) doA(字符串 txt) { //这是我的实现的特定方法 }}

  2. 现在,我想遵循良好编程的规则“通过接口(interface)编程,而不是通过实现编程”,因此我需要一个用于自定义对话框的接口(interface)

    接口(interface) InterfaceForMyDialog { 公共(public) doA(字符串 txt);}

  3. 显然类 MyImplementation 必须实现该接口(interface),因此我更改了上面的伪代码,只是添加并实现了

    类 MyImplementation 扩展 JDialog 实现 InterfaceForMyDialog { 公共(public) doA(字符串 txt) { //这是我的实现的特定方法 }}

  4. 现在我最终需要在外部代码中的某个位置(假设在主方法中的某个位置)使用我的新对话框,如下所示:

    ...InterfaceForMyDialog myDialogInterface = new MyImplementation(...);

问题:您应该如何完成上面的代码,使用方法“doA(String txt)”为我的自定义对话框设置一些文本,然后显示对话框本身?我认为使用这种结构是不可能的,我找到了使用抽象类的解决方案(见下文)。如果我错了或者有更好的解决方案解释请写在这里。

最佳答案

您是对的,您只能扩展一门类(class);由于您正在扩展 JDialog,因此您可以实现 0 个或多个接口(interface),但不能扩展另一个类。

如果您的接口(interface)有两个方法:

public interface customDialogInterface
{
public void doA();
public int doB();
}

那么你的类(class)就可以拥有

public class customDialog extends JDialog implements customDialogInterface

只要 customDialog 具有方法 doA()doB()

注意:按照惯例,类名和接口(interface)名都以大写字母开头。如果您使用 CustomDialogCustomDialogInterface,全世界的 Java 程序员都会发现更容易理解您的代码。

关于java - 如何为扩展 JDialog 的类(或通常另一个类)创建接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37633265/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com