我需要创建一个改变变量类型的子类。
我的目的是创建一个将对象动态加载到表单上的类。此表单可以是 JFrame
或 JInternalFrame
,因此我想要一个引导属性表单的类,该属性表单可以是 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/