图形界面编程技术手册编写:Kende_zhu第一节基本容器JFrame1、第一个JFrame窗体程序publicclassJFrameDemo{publicstaticvoidmain(String[]args){JFramejf=newJFrame(这是我的第一个swing窗体);Dimensiond=newDimension(300,200);jf.setSize(d);Pointp=newPoint(500,400);jf.setLocation(p);jf.setVisible(true);}}第二节标签组件JLabel1、定义标签对象publicclassJLabelDemo{publicstaticvoidmain(String[]args){JFramejf=newJFrame(这是我的第一个swing窗体);JLabellab=newJLabel(KENDE,JLabel.CENTER);//实例化标签对象jf.add(lab);//将Label组件添加到JFrame面板中Dimensiond=newDimension(300,200);jf.setSize(d);Pointp=newPoint(500,400);jf.setLocation(p);jf.setVisible(true);}}2、定义标签字体标签可以设置字体,包括什么字体,字体的颜色,大小,是否斜体等publicclassJLabelDemo2{publicstaticvoidmain(String[]args){JFramejf=newJFrame(这是我的第一个swing窗体);JLabellab=newJLabel(KENDE,JLabel.CENTER);//实例化标签对象Fontfont=newFont(Dialog,Font.ITALIC+Font.BOLD,30);lab.setFont(font);jf.add(lab);//将组件添加到面板中Dimensiond=newDimension(300,200);jf.setSize(d);Pointp=newPoint(500,400);jf.setLocation(p);jf.setVisible(true);}}3、得到本机中所有的字体publicclassGetAllFonts{publicstaticvoidmain(String[]args){GraphicsEnvironmentg=GraphicsEnvironment.getLocalGraphicsEnvironment();Stringfonts[]=g.getAvailableFontFamilyNames();for(Stringname:fonts){System.out.println(name);}}}4、在Label中设置显示的图片publicclassJLabelDemo3{publicstaticvoidmain(String[]args){JFramejf=newJFrame(这是我的第一个swing窗体);Iconicon=newImageIcon(E:\\picBackGroud\\野生动物王国.jpg);JLabellab=newJLabel(KENDE,icon,JLabel.CENTER);//实例化标签对象Fontfont=newFont(Serif,Font.ITALIC+Font.BOLD,30);lab.setFont(font);jf.add(lab);//将组件添加到面板中Dimensiond=newDimension(300,200);jf.setSize(d);Pointp=newPoint(500,400);jf.setLocation(p);jf.setVisible(true);}}第三节按钮组件JButton1、在JFrame中增加按钮publicclassJButtonDemo01{publicstaticvoidmain(String[]args){JFrameframe=newJFrame(WelcometoKende'shome!);JButtonbt=newJButton(按钮);frame.add(bt);frame.setSize(300,200);frame.setLocation(400,300);frame.setVisible(true);}}2、往JButton中添加图片publicclassJButtonDemo02{publicstaticvoidmain(String[]args){JFrameframe=newJFrame(WelcometoKende'shome!);StringpicPath=E:\\picBackGroud\\a.jpg;Iconicon=newImageIcon(picPath);JButtonbt=newJButton(icon);frame.add(bt);frame.setSize(800,500);frame.setLocation(400,300);frame.setVisible(true);}}第四节布局管理器1、FlowLayout布局管理器FlowLayout属于流式布局管理器,使用此种布局方式,所有的组件会像流水一样依次排列。publicclassFlowLayoutDemo01{publicstaticvoidmain(String[]args){JFrameframe=newJFrame(Welcometokende'shome);frame.setLayout(newFlowLayout(FlowLayout.CENTER,20,20));JButtonbutton=null;for(inti=0;i9;i++){button=newJButton(按钮-+i);frame.add(button);}frame.setSize(800,500);frame.setLocation(400,300);frame.setVisible(true);}}效果图:2、BorderLayout布局管理器BorderLayout将一个窗体的版面划成东,西,南,北,中五个区域,可以直接将需要的组件放到五个区域即可publicclassBorderLayoutDemo01{publicstaticvoidmain(String[]args){JFrameframe=newJFrame(Welcometokende'shome);frame.setLayout(newBorderLayout(20,20));frame.add(newJButton(东),BorderLayout.EAST);frame.add(newJButton(西),BorderLayout.WEST);frame.add(newJButton(南),BorderLayout.SOUTH);frame.add(newJButton(北),BorderLayout.NORTH);frame.add(newJButton(中),BorderLayout.CENTER);frame.setSize(500,300);frame.setLocation(400,300);frame.setVisible(true);}}3、GridLayout布局管理器GridLayout布局管理器是以表格的形式进行管理的,在使用此布局管理器的时候必须设置显示的行数和列数。publicclassGridLayoutDemo01{publicstaticvoidmain(String[]args){JFrameframe=newJFrame(Welcometokende'shome);frame.setLayout(newGridLayout(3,5,3,3));JButtonbutton=null;for(inti=0;i13;i++){button=newJButton(按钮-+i);frame.add(button);}frame.setSize(500,300);frame.setLocation(400,300);frame.setVisible(true);}}效果图:4、CardLayout布局管理器CardLayout就是将一组组件彼此重叠的进行布局,就像一张张卡片一样,这样每次只会展现一个界面publicclassCardLayoutDemo01{publicstaticvoidmain(String[]args){JFrameframe=newJFrame(Welcometokende'shome);CardLayoutcard=newCardLayout();frame.setLayout(card);Containercon=frame.getContentPane();con.add(newJLabel(标签-A,JLabel.CENTER),first);con.add(newJLabel(标签-B,JLabel.CENTER),second);con.add(newJLabel(标签-C,JLabel.CENTER),third);con.add(newJLabel(标签-D,JLabel.CENTER),fourth);con.add(newJLabel(标签-E,JLabel.CENTER),fifth);frame.pack();frame.setVisible(true);card.show(con,third);for(inti=0;i5;i++){card.next(con);try{Thread.sleep(2000);}catch(InterruptedExceptione){e.printStackTrace();}}}}5、绝对定位以上的布局管理器都是依靠专门的工具完成,在java中也可以通过绝对定位的方式完成publicclassAbsoluteLayoutDemo01{publicstaticvoidmain(String[]args){JFrameframe=newJFrame(Welcometokende'shome);frame.setLayout(null);JLabeltitle=newJLabel();JButtonenter=newJButton(进入);JButtonhelp=newJButton(帮助);frame.setSize(500,400);frame.setLocation(300,200);title.setBounds(45,5,150,20);enter.setBounds(280,30,100,80);help.setBounds(100,50,200,100);frame.add(title);frame.add(enter);frame.add(help);frame.setVisible(true);}}第五节其他容器1、Jpanel最早是在JFrame中加入组件,但是现在可以将组件加入到Jpanel中,在Jpanel中完成各个组件的排列,之后再将所有独立的Jpanel直接放在JFrame之中,以完成复杂的图形显示。publicclassJPanelDemo01{publicstaticvoidmain(String[]args){JFrameframe=newJFrame(Welcometokende'shome);JPanelpanel=newJPanel();panel.add(newJLabel(标签-1));panel.add(newJLabel(标签-2));panel.add(newJLabel(标签-3));panel.add(newJButton(按钮-X));panel.add(newJButton(按钮-Y));panel.add(newJButton(按钮-Z));frame.add