标题:[求助]问一个关于THIS用法的问题
只看楼主
shiyide
Rank: 2
等 级:新手上路
威 望:4
帖 子:297
专家分:0
注 册:2006-2-22
 问题点数:0 回复次数:4 
[求助]问一个关于THIS用法的问题
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class BorderLayoutDemo extends JFrame
{
JPanel contentPane;
BorderLayout borderLayout1=new BorderLayout();
JButton northBtn=new JButton();
JButton centerBtn=new JButton();
JButton westBtn=new JButton();
JButton eastBtn=new JButton();
JButton southBtn=new JButton();
public BorderLayoutDemo()
{
try
{
jbInit();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String args[])//throws Exception
{
//设置窗口的显示风格
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e)
{
e.printStackTrace();
}
BorderLayoutDemo frame=new BorderLayoutDemo();
//Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();//获得屏幕的分辨率--宽和高。
Dimension frameSize=frame.getSize();//获得frame的宽和高
//也可以用下面的方法获得屏幕的分辨率--宽和高。
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screenSize=kit.getScreenSize();

frame.setLocation((screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);
frame.setVisible(true);
}
private void jbInit()throws Exception
{
contentPane=(JPanel)this.getContentPane();//这里这个是什么意思~?为什么不能用我下面的那句话代替?
//contentPane=new JPanel();
contentPane.setLayout(borderLayout1);
//这里的这个THIS和下面的那个THis到底指的是什么 ?为什么不能用contentPane代替
this.setSize(new Dimension(400,300));
this.setTitle("BorderLayout布局示例");
northBtn.setText("北");
centerBtn.setText("中");
westBtn.setText("西");
eastBtn.setText("东");
southBtn.setText("南");
contentPane.add(northBtn,BorderLayout.NORTH);
contentPane.add(centerBtn,BorderLayout.CENTER);
contentPane.add(westBtn,BorderLayout.WEST);
contentPane.add(eastBtn,BorderLayout.EAST);
contentPane.add(southBtn,BorderLayout.SOUTH);
//设定最下化的图片
Toolkit kit=Toolkit.getDefaultToolkit();//Tookit是抽象类不能被事例化,它有一个静态方法static Toolkit getDefaultToolkit(),返回一个Toolkit的对象实例
Image image=kit.getImage("G:\\JAVA\\Book\\bookmark.gif");
this.setIconImage(image);
}
protected void processWindowEvent(WindowEvent e)
{
if(e.getID()==WindowEvent.WINDOW_CLOSING)
{
System.exit(0);
}
}
}
上面的代码中我有几个地方搞不懂我在代码中注释了 请大家帮帮忙!
搜索更多相关主题的帖子: THIS 用法 
2006-05-22 08:00
★王者至尊★
Rank: 1
等 级:新手上路
帖 子:528
专家分:0
注 册:2006-3-28
得分:0 
getContentPane()是获得窗体 JFrame上添加组件必须用这个语句
this就是当前对象的引用 也就是BordLayoutDemo的对象

------Java 爱好者,论坛小混混,学习中------
2006-05-22 08:58
shiyide
Rank: 2
等 级:新手上路
威 望:4
帖 子:297
专家分:0
注 册:2006-2-22
得分:0 

还是有点似懂非懂的感觉``


学好编程,为中国的软件事业出一份力。
2006-05-22 09:04
★王者至尊★
Rank: 1
等 级:新手上路
帖 子:528
专家分:0
注 册:2006-3-28
得分:0 
?

------Java 爱好者,论坛小混混,学习中------
2006-05-22 12:02
iyuohz
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2006-2-22
得分:0 
BorderLayoutDemo frame1=new BorderLayoutDemo();
BorderLayoutDemo frame2=new BorderLayoutDemo();
...
这样的代码可以写一大堆吧?
但是
contentPane=(JPanel)this.getContentPane();//这里这个是什么意思~?为什么不能用我下面的那句话代替?
这句话,不可能写成 frame1.getContentPane(); frame2.getContentPane(); ...
这样的东西谁要这么写,会挨雷劈的,呵呵,所以 用this 代替了frame1...这些东西,
所以斑竹说 this就是当前对象的引用 在你的代码里也就是指BordLayoutDemo的对象

getContentPane()可以查一下JFrame的api
public Container getContentPane()
这样一看,就知道它返回的是一个Container类型的,所以(JPanel)this.getContentPane这么写,强制把Container类型 转换成了一个 JPanel类型的

[此贴子已经被作者于2006-5-23 23:54:42编辑过]


2006-05-23 23:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-66141-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025805 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved