Java程序设计基础教程第六章图形用户界面编辑.docx
《Java程序设计基础教程第六章图形用户界面编辑.docx》由会员分享,可在线阅读,更多相关《Java程序设计基础教程第六章图形用户界面编辑.docx(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一、图形用户界面的核心概念(1)一个简单的GUI示例。例题:将二进制数据转换为十进制importjava.awt.*;importjava.awt.event.*;public class ConvertToDec extends Frameimplements ActionListener Labeldec; TextFieldinput; publicConvertToDec() super(binary to decimal); dec=new Label(.结果.); input=new TextField(15); Button convert=new Button(转换); set
2、Layout(new FlowLayout(); add(input); add(convert); add(dec); convert.addActionListener(this); publicvoid actionPerformed(ActionEvent e) String s=input.getText(); int x=Integer.parseInt(s,2); dec.setText(result=+x); publicstatic void main(String args) Frame x=new ConvertToDec(); x.setSize(400,100); x
3、.setVisible(true); (2)创建窗体Frame的创建大致有两种方式: 通过继承Frame来创建窗体。 直接由Frame类创建。(3)创建GUI部件由add()方法把GUI布局加入到容器中。(4)事件处理 事件处理的流程给事件源对象注册监听者给监听者编写事件处理代码发生事件时调用监听者的方法进行相关处理 事件监听者接口及其方法Java中的所有事件类都定义在java.awt.event包中,该包中还定义了11个监听者接口,每个接口内部包含了若干处理相关事件的抽象方法。见P158:表7-1(5)在事件处理代码中区分事件源一个事件源对象可以注册多个监听者,一个监听者也可以监视多个事件源
4、。不同类型的事件提供了不同的方法来区分事件源对象。如ActionEvent类中提供了两个方法: getSource():用来获取事件对象名。 getActionCommand():用来获取事件对象的命令名。例题:有两个按钮,点击按钮b1画圆,点击按钮b2画矩形。import java.awt.*;import java.awt.event.*;public class TwoButton extends Panel implements ActionListener Button b1,b2; Panel draw; public TwoButton(Paneldraw) this.draw=
5、draw; b1=new Button(circle); b2=new Button(rectangle); add(b1); add(b2); b1.addActionListener(this); b2.addActionListener(this); public voidactionPerformed(ActionEvent e) Graphics g=draw.getGraphics(); g.setColor(draw.getBackground(); g.fillRect(0,0,draw.getSize().width,draw.getSize().height); g.set
6、Color(Color.blue); String label=e.getActionCommand(); if(label.equals(circle) g.drawOval(20,20,50,50); else g.drawRect(20,20,40,60); public static voidmain(String args) Frame f=new Frame(to Button eventTest); Panel draw=new Panel(); TwoButton two=new TwoButton(draw); f.setLayout(new BorderLayout();
7、f.add(North,two); f.add(Center,draw); f.setSize(300,300); f.setVisible(true); (6)关于事件适配器类例题:处理窗体关闭/*/import java.awt.*;import java.awt.event.*;import java.applet.*;public class TestFrame extends Applet public void init() new MyFrame(); class MyFrame extends Frame implements ActionListener Button btn
8、; MyFrame() super(MY WINDOWS); btn=new Button(关闭); setLayout(new FlowLayout(); add(btn); btn.addActionListener(this); addWindowListener(new CloseWin(); setSize(300,200); setVisible(true); public voidactionPerformed(ActionEvent e) if(e.getActionCommand()=关闭) dispose(); ;class CloseWin extends WindowA
9、dapter public voidwindowClosing(WindowEvent e) Window w=e.getWindow(); w.dispose(); ;二、容器与布局管理Java.awt包中定义了5种布局管理器:(1)FlowLayout:流式布局例题:import java.awt.*;import java.applet.Applet;public class FlowLayoutExample extendsApplet publicvoid init() setLayout(newFlowLayout(FlowLayout.LEFT,10,10); String sp
10、aces=; for(int i=1;i=9;i+) add(new Button(B #+i+spaces); spaces+= ; publicstatic void main(String args) Frame x=new Frame(FlowLayout); FlowLayoutExample y=new FlowLayoutExample(); x.add(y); y.init(); x.setSize(200,100); x.setVisible(true); (2)BorderLayout:边缘布局例题:import java.awt.*;import java.applet.
11、Applet;public class BorderLayoutExample extendsApplet Stringborders=North,East,South,West,Center; publicvoid init() setLayout(new BorderLayout(10,10); String spaces=; for(int i=0;i5;i+) add(borders,new Button(borders); publicstatic void main(String args) Frame x=new Frame(BorderLayout); BorderLayout
12、Example y=newBorderLayoutExample(); x.add(y); y.init(); x.setSize(300,200); x.setVisible(true); (3)GridLayout:网格布局例题:import java.awt.*;import java.applet.Applet;public class GridLayoutExample extendsApplet publicvoid init() setLayout(new GridLayout(3,3,10,10); for(int i=1;i=9;i+) add(new Button(Butt
13、on #+i); publicstatic void main(String args) Frame x=new Frame(GridLayout); GridLayoutExample y=new GridLayoutExample(); x.add(y); y.init(); x.setSize(300,200); x.setVisible(true); (4)CardLayout:卡片布局例题:import java.awt.*;import java.applet.*;import java.awt.event.*;public class CardLayoutExample exte
14、ndsApplet publicvoid init() final CardLayout cardlayout=newCardLayout(10,10); setLayout(cardlayout); ActionListener listener=newActionListener() public void actionPerformed(ActionEvente) cardlayout.next(CardLayoutExample.this); ; for(int i=1;i=9;i+) Button b=new Button(Button#+i); b.addActionListene
15、r(listener); add(Button+i,b); publicstatic void main(String args) Frame x=new Frame(CardLayout); CardLayoutExample y=new CardLayoutExample(); x.add(y); y.init(); x.setSize(300,200); x.setVisible(true); (5)GridBagLayout:网格快布局例题:import java.awt.*;public class Test extends Frame publicstatic void main(
16、String args) new Test(); publicTest() Label receiveLabel=new Label(收件人:); Label ccLabel=new Label(抄送:); Label subjectLabel=new Label(主题:); Label accessoryLabel=new Label(附件:); TextField receiveField=new TextField(); TextField ccField=new TextField(); TextField subjectField=new TextField(); TextArea
17、accessoryArea=new TextArea(1,40); TextArea mailArea=new TextArea(8,40); setLayout(new GridBagLayout(); GridBagConstraints gridBag=new GridBagConstraints(); gridBag.fill=GridBagConstraints.HORIZONTAL; gridBag.weightx=0; gridBag.weighty=0; receiveLabel.setFont(newFont(Alias,Font.BOLD,16); addToBag(rec
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序设计 基础教程 第六 图形 用户界面 编辑
限制150内