[英]About GUI in Java?
我正在尝试用Java学习GUI,但我有点困惑,并想知道这个代码在窗口中添加组件的区别是什么? 当我查看代码示例时,它变化很大,一些示例使用JPanel,只需通过编写:panel.add(something); 有些代码只使用add(something); 或contentPane.add(某事物); 我只是好奇。 谢谢!
JList text;
JPanel panel = new JPanel();
frame.add(panel);
panel.add(text);
-
setLayout(new FlowLayout);
add(text);
-
Container contentPane;
contentPane = getContentPane();
contentpane.setLayout(new FlowLayout);
contentPane.add(text);
您所看到的差异更多地与Java语言有关,而与正在执行的实际操作关系不大。
如果在未指定特定对象的情况下调用方法,则Java语言假定您正在调用this
对象上的方法或您当前正在使用的对象。
public class MyClass {
public void doThis() {
}
public void doThat() {
// the following line will call this.doThis()
doThis();
// this is exactly the same as the line above, except it is explicitly stated
this.doThis();
}
}
有时,方法希望在不同的对象上调用方法。 在这种情况下,您有一个变量持有对“other”对象的引用,当您在该对象上调用该方法时,您必须取消引用该名称引用,一个示例可能如下所示:
public Class MyOtherClass {
public void doTheOtherThing(MyClass myClass) {
myClass.doThis();
}
}
Swing编程的不同示例不同。 一些示例往往比其他示例更面向对象。 为了说明,如果你需要一个“特殊”按钮,一个例子可能是子类的按钮并在子类中适当地配置它,而另一个例子可能构造一个非子类按钮并从'JButton'类的外部配置它。
良好的面向对象编程有利于子类化作为外部配置的解决方案。 这是因为配置按钮的代码成为新按钮子类的一部分,因此当通过程序将Button移动到不同的位置时,配置代码不会意外地与Button分离。 有时分析最佳的面向对象结构可能代价高昂,在这种情况下,人们可能会发布具有大量“对象外部”影响的代码。
不同之处在于代码所在的位置。 代码的第二部分只在具有setLayout
和add
方法的类的方法中有意义; 这很可能是因为该类是从JPanel
或其他Container
继承的自定义GUI组件。
第三部分调用getContentPane
,它是JFrame
一种方法,因此它很可能从该类继承。
如果你编辑你的问题以发布示例代码的周围环境(或链接到它),我(或者比我更有经验的Swing)可能能够更详细地解释它是如何工作的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.