如何解决Java中的容器AWT对象
我正在以Frame
,JFrame
的形式对AWT进行研究,并且发现对象Contianer
是它们的父对象,但是我不知道我可以将容器对象用作Frame
还是{ {1}},以下是我的代码,但无法正常工作:
JFrame
我们为什么不使用public class icontainer {
public static void main(String[] args) {
Container icon= new Container(); // new JFRAME();
icon.setSize(300,300);
icon.setLocation(300,300);
icon.setVisible(true);
}
}
代替icon = new Container()
?
解决方法
继承不是这样的。
容器是一个基类,它不多但可以跟踪其子代。就是这样。它本身不是窗口。
来自Javadoc:
通用抽象窗口工具包(AWT)容器对象是可以包含其他AWT组件的组件。
在列表中跟踪添加到容器的组件。列表的顺序将定义容器内组件从前到后的堆叠顺序。如果在将组件添加到容器时未指定索引,则会将其添加到列表的末尾(因此也将添加到堆叠顺序的底部)。
但是就是这样。没有任何地方提到窗户。它不会单独显示任何内容。它显示在其他地方。
另一方面,JFFrame是 一个窗口(它实际上是通过java.awt.Frame继承自java.awt.Window)。
来自java.awt.Frame的Javadoc:
框架是带有标题和边框的顶层窗口。
然后还有一些细节,关于框架如何布置内容等pp,以及窗口装饰的外观和行为,特别是wrt。诸如WINDOW_CLOSING之类的WindowEvents。这些都是只存在于框架而不是容器中的东西。
如果您使用JFrame,则会得到一些专门的处理,例如内容窗格,以使其更好地与JFC / Swing组件体系结构一起使用。
Container window = new Container();
这是您可以编写的代码,但是几乎没有用。为了使容器实际显示在屏幕上,仍然需要将其放入窗口。
Container window = new JFrame();
您可以这样做,因为JFrame是容器的子类,因此与容器赋值兼容。 但是,您将无法调用容器上java.awt.Window,java.awt.Frame或javax.swing.JFrame引入的任何方法,因为这些方法在Container上不存在。
,您应该使用JFrame或Frame,因为其自身的容器不是向用户显示的“窗口”。
我不推荐这样做,但是您可以像这样将JFrame或Frame存储为容器:
Container icon = new JFrame();
icon.setSize(300,300);
icon.setLocation(300,300);
icon.setVisible(true);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。