java中编JFrame子类,谁能帮忙讲解一下如下每行代码?
import java.awt.event.*;
import javax.swing.*;
public class MyJFrame extends JFrame{
public MyJFrame(String title, int x,int y,int width,int height){
setTitle(title);
setLocation(x,y);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MyJPanel frameContent = new MyJPanel();
Container visibleArea = getContentPane();
visibleArea.add(frameContent);
frameContent.setPreferredSize(new Dimension(width,height));
pack();
frameContent.requestFocusInWindow();
setVisible(true);
}
} 展开
setTitle(title);
设置标题,图片a1中的englishleaner所占的地方就是标题。
setLocation(x,y);
public void setLocation(int x,int y)
将组件移到新位置。通过此组件父级坐标空间中的 x 和 y 参数来指定新位置的左上角。
参数:
x - 父级坐标空间中新位置左上角的 x 坐标
y - 父级坐标空间中新位置左上角的 y 坐标
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
用来退出(主要是,有了它以后,退出就会彻底关闭程序,释放内存)的,效果等同于
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
MyJPanel frameContent = new MyJPanel();
这句肯定是存在一个类MyJPanel后才有的,不知道是不是你自己写的类,还是看别人的。
给一个这个类的推测吧。
public class MyJPanel extends JPanel{
public MyJPanel(/*参数表*/){
/*构造函数实现*/
}
}
Container visibleArea = getContentPane();
public Container getContentPane()
返回此窗体的 contentPane 对象
就是一个JFrame中除了边框的部分。
这句最好写成:
Container visibleArea = this.getContentPane();
this 是指MyJFrame。
这么写主要是使代码更好阅读。
visibleArea.add(frameContent);
就是把frameContent 加入到 visibleArea中。
frameContent.setPreferredSize(new Dimension(width,height));
这是在设置frameContent的首选大小,这主要是用来在没有给定大小(也就是加入到frameContent中的MyJPanel的对象没有加入组件,大小为0,此时,frameContent的大小也为0。)如果是括号中的情况,就选用这个给定的首选大小而不是0。当然,这里用0来表示大小不太适合,反正就是这么个意思。你在理解理解吧。
Dimension(width,height)就是一个给定了宽和高的矩形。
pack();
使得组件能够自己适应自己需要的大小。
frameContent.requestFocusInWindow();
使frameContent获得焦点,就相当于我们同时打开了两个程序A和B,当我们点到B时,焦点就在B上,而A就没有焦点。如果A请求(request)焦点(Focus),那么焦点就回到A。就相当于我们现在再重新点到程序A。
setVisible(true);
使的MyJFrame可见,系统默认的是不可见的,所以需要这一行来使得组件MyJFrame 可见。
当然这里的MyJFrame 是类,我们实际中是使得这个类的一个对象可见,但是在你给的代码中没有具体的对象,所以就用MyJFrame代指具体的对象。