第10课用户界面设计.ppt
《第10课用户界面设计.ppt》由会员分享,可在线阅读,更多相关《第10课用户界面设计.ppt(40页珍藏版)》请在三一文库上搜索。
1、第10课 用户界面设计,参见Java面向对象编程的第17,18章,AWT容器,容器Container能够用来存放别的组件。 有两种类型的容器:Window和Panel。,Frame容器,Window是能独立存在的容器,它有一个子类Frame。 Frame有一个构造方法Frame(String title) 你可以通过add()方法,在Frame中加入其他的组件。 Frame被创建后,它是不可见的. 参见FrameShower.java,FrameShower.java,package gui; import java.awt.*; public class FrameShower public
2、 static void main(String args) Frame f=new Frame(“hello“); f.add(new Button(“Press Me“); f.setSize(100,100); f.setVisible(true); ,Panel容器,Panel只能存在于其他的容器(Window或其子类)中. 通过Panel的默认构造方法Panel()可以创建一个Panel。 参见MyFrame.java,MyFrame.java,package gui; import java.awt.*; public class MyFrame extends Frame Pan
3、el panel=new Panel(); Button button=new Button(“press me“); public MyFrame(String title) super(title); panel.add(button); panel.setBackground(Color.yellow); add(panel); setBackground(Color.blue); setSize(500,500); setVisible(true); public static void main(String args) MyFrame f=new MyFrame(“hello“);
4、 ,布局管理器,一.取消布局管理器 setLayout(null) 二.默认布局管理器 Window,Frame和Dialog的默认布局管理器是BorderLayout Panel和Applet的默认布局管理器是FlowLayout。,取消布局管理器,public MyFrame(String title) super(title); panel.setLayout(null); panel.setSize(200,200); panel.setLocation(50,50); button.setSize(80,50); button.setLocation(80,80); panel.ad
5、d(button); panel.setBackground(Color.yellow); setLayout(null); add(panel); setBackground(Color.blue); setSize(500,500); setVisible(true); ,y,x,布局管理器,布局管理器分为5种: - FlowLayout 流式布局管理器 - BorderLayout边界布局管理器 - GridLayout网格布局管理器 - CardLayout卡片布局管理器 - GridBagLayout网格包布局管理器,布局管理器练习,运行 MyFlow.java 运行 BorderL
6、ayoutTester.java 运行GridEx.java 运行 CardLayoutTester.java 运行GridBagEx1.java 改变容器中组件的布局,观看显示效果,FlowLayout,public class MyFlow private Frame f; private Button button1, button2, button3; public static void main (String args) MyFlow mflow = new MyFlow (); mflow.go(); public void go() f = new Frame (“Flow
7、Layout“); f.setLayout(new FlowLayout(); button1 = new Button(“Ok“); button2 = new Button(“Open“); button3 = new Button(“Close“); f.add(button1); f.add(button2); f.add(button3); f.setSize (600,600); f.setVisible(true); ,BorderLayout,public class BorderLayoutTester private Frame f; private Button bn,
8、bs, bw, be, bc; public static void main(String args) BorderLayoutTester guiWindow2 = new BorderLayoutTester(); guiWindow2.go(); public void go() f = new Frame(“Border Layout“); /f.setLayout(new BorderLayout(); bn = new Button(“B1“); bs = new Button(“B2“); be = new Button(“B3“); bw = new Button(“B4“)
9、; bc = new Button(“B5“); f.add(bn, BorderLayout.NORTH); f.add(bs, BorderLayout.SOUTH); f.add(be, BorderLayout.EAST); f.add(bw, BorderLayout.WEST); f.add(bc, BorderLayout.CENTER); f.add(new Button(“hello“); f.pack(); f.setVisible(true); ,GridLayout,public class GridEx private Frame f; private Button
10、b1, b2, b3, b4, b5, b6; public static void main(String args) GridEx grid = new GridEx(); grid.go(); public void go() f = new Frame(“Grid example“); f.setLayout (new GridLayout (3, 2); b1 = new Button(“1“); b2 = new Button(“2“); b3 = new Button(“3“); b4 = new Button(“4“); b5 = new Button(“5“); b6 = n
11、ew Button(“6“); f.add(b1); f.add(b2); f.add(b3); f.add(b4); f.add(b5); f.add(b6); f.setSize(500,500); f.setVisible(true); ,CardLayout,public class CardLayoutTester public static void main(String args) Panel p1, p2, p3; Frame f = new Frame (“Card Test“); CardLayout myCard = new CardLayout(); f.setLay
12、out(myCard); p1 = new Panel();p2 = new Panel(); p3 = new Panel(); f.setBackground(Color.white); p1.setBackground(Color.black); p2.setBackground(Color.blue); p3.setBackground(Color.red); f.add(p1, “First“); f.add(p2, “Second“); f.add(p3, “Third“); myCard.show(f, “Second“); f.setSize (200, 200); f.set
13、Visible(true); ,创建面板及复杂布局,参见 ExGui3.java,创建面板及复杂布局,参见ExGui4.java,事件处理,每一个可以触发事件的组件被当作事件源. 每一种事件都对应专门的监听者。 监听者用来接收和处理这种事件。 一个事件源可以触发多种事件,如果它注册了某种事件对应的监听者,那么这种事件就会被接收和处理。这种模式被称为 “委托模型“。,事件处理的软件实现,事件类(XXXEvent) 事件监听接口(XXXListener) 组件的注册监听接口方法(addXXXListener()方法),事件处理,1.用内部类实现监听接口 参看EventTester1.java 2.
14、将容器类实现监听接口 参看EventTester2.java 3.定义专门的外部类实现监听接口 参看EventTester3.java 4.采用事件适配器 参看EventTester4.java 5.一个组件注册多个监听者 参看EventTester5.java,用内部类实现监听接口,public class EventTester1 extends Frame static int count=1; public EventTester1 (String title)super(title); public static void main(String args) EventTester1
15、 f=new EventTester1 (“hello“); f.setLayout(new FlowLayout(); final Button b=new Button(“1“); b.addActionListener(new ActionListener() /declare an Inner class public void actionPerformed(ActionEvent evt) b.setLabel(new Integer(+count).toString(); ); f.add(b); f.setSize(100,100); f.setBackground(Color
16、.blue); f.setVisible(true); ,将容器类实现监听接口,public class EventTester2 extends Frame implements ActionListener int count=1; Button b; public EventTester2(String title) super(title); setLayout(new FlowLayout(); b=new Button(“1“); b.addActionListener(this); /Sample itself is an ActionListener add(b); setSi
17、ze(100,100); setBackground(Color.blue); setVisible(true); public static void main(String args) EventTester2 f=new EventTester2 (“hello“); public void actionPerformed(ActionEvent evt) b.setLabel(new Integer(+count).toString(); ,定义专门的外部类实现监听接口,public class EventTester3 extends Frame Button b; Button b
18、1; public EventTester3 (String title) super(title); setLayout(new FlowLayout(); b=new Button(“1“); b.addActionListener(new MyListener(1); add(b); b1=new Button(“not registred“); add(b1); setSize(100,100); setBackground(Color.blue); setVisible(true); public static void main(String args) EventTester3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 用户 界面设计
链接地址:https://www.31doc.com/p-3122720.html