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);//添加标签组件到窗体中 }}