1、窗体是一个组件容器,所有组件都必须有窗体去承载他们。JFrame是Swing技术的窗体类,可通过 extends java.swing.JFrame类创建一个窗体。
JFrame窗体类包含一个容器类,所有放置在窗体上的组件其实都是放置在这个容器类上。
JFrame jf = new JFrame;
Container container = jf.getContentPane();
package Eleven;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.BorderLayout;
public class FrameD extends JFrame{
public static void main(String[] args){
//void java.awt.EventQueue.invokeLater(Runnable runnable)
//This will happen after all pending events are processed.
/*,java的GUI都是的单线程,应该使用事件调度线程去执行,如果没使用事件调度线程的话,
* 可能造成死锁。但是在小的程序中,这种现象(死锁)不会发生的;大的应用程序中可能会出现这种现象*/
/*swing是单线程的,所有与组件绘制有关的操作都必须在单一线程中完成,这个线程就是事件队列线程
*EventQueue类的invokeLater()方法可以将Swing组件相关的操作的线程加入到事件队列中,
*这样可以把界面绘制与业务处理线程分开,避免执行业务处理时导致界面出现卡死或假死现象 */
EventQueue.invokeLater(new Runnable(){
public void run() {
// TODO Auto-generated method stub
try{
FrameD frame = new FrameD();//创建窗体
frame.setVisible(true);//设置窗体可见,JFrame的窗体默认不可见
}catch(Exception e){
e.printStackTrace();
}
}
});
}
/*
* 构造方法,在其中定义了界面的初始化*/
public FrameD(){
super();
//void java.awt.Window.setBounds(int x, int y, int width, int height)
setBounds(100,100,214,140);//设置窗体大小、位置
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗体默认关闭方式
final JLabel label = new JLabel();//创建JLabel标签组件
label.setText("a JFrame Window");//设置标签文本
getContentPane().add(label,BorderLayout. PAGE_END);//添加标签组件到窗体中
}
}