java - 无法更改子类中的公共(public)变量类型

标签 java swing

我需要创建一个改变变量类型的子类。

我的目的是创建一个将对象动态加载到表单上的类。此表单可以是 JFrameJInternalFrame,因此我想要一个引导属性表单的类,该属性表单可以是 JFrame/JInternalFrame 之一,这样我就可以编写方法和函数,而无需重复代码。

类似于

public class form {

    public javax.swing.JFrame frm;
...... methods and functions.

    public void init(String title)
    {

        frm = new JFrame(title);
    }

}

class form_children extends form {
    public javax.swing.JInternalFrame frm;

    public void init(String title)
    {

        frm = new JInternalFrame(title);
    }
}

这样当我使用它们时我可以做这样的事情

public form_to_create (String title, Boolean mdi_child)
{
        if (mdi_child)
            frm = new form_children();
        else
            frm = new form();

        frm.init();
        frm.dosomething -----> error for null object
}

但是当我使用 mdi_child 时,它会给出 null 对象错误。 似乎父类(super class)的 frm 变量存在,但子类的 frm 不存在。 为什么?

最佳答案

I need to make a subclass changing variable type.

My purpose is create a class that dynamically loads objects onto a form. This form can be a JFrame or JInternalFrame, so I want a class leading a property Form that can be one of JFrame / JInternalFrame, so I can write methods and functions without duplicate code.

通过让您的类扩展 JFrame、JInternalFrame 或其他顶级(或内部顶级)窗口,您将陷入困境,因为这迫使您创建和显示这些类型的窗口,而通常需要更大的灵 active 呼吁。事实上,我敢说我创建的和见过的大多数 Swing GUI 代码都扩展 JFrame,而且事实上您很少会想要这样做这。更常见的是,您的 GUI 类将适合创建 JPanel,然后可以将其放入 JFrame、JInternalFrames 或 JDialogs、或 JTabbedPanes 中,或者在需要的地方通过 CardLayouts 进行交换。这将大大提高 GUI 编码的灵 active 。

关于java - 无法更改子类中的公共(public)变量类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58984401/

相关文章:

java数据报套接字未收到(本地主机)

java - 将 blob 转换为图像流并将其分配给 jLabel

java - 调度程序可以挂起一个线程并执行另一个线程/工作吗?

java - JSlider 旋钮未更新(基本 Java)

java - 对tomcat的套接字http请求,但响应302

java - 旅行推销员 - 如何找到不等价的排列

java - 在 JAR 中使用 Tomcat 连接池(来自 Web 应用程序的共享配置,spring 配置)

java - 如何通过以编程方式生成 KeyEvent 来模拟键盘输入(包括光标移动)

java - JPanel 中的组件大小

java - 如何清除jtable中的数据