图形用户界面编程.ppt
《图形用户界面编程.ppt》由会员分享,可在线阅读,更多相关《图形用户界面编程.ppt(144页珍藏版)》请在三一办公上搜索。
1、,第九章 图形用户界面编程,计算机网络与多媒体研究所计算机科学与技术、软件学院浙江工业大学,高家全 Cell:Email:,前言,本章的目的:图形用户界面(GUI)程序包括哪些元素?如何开发图形用户界面程序?如何让界面上的按钮、下拉框、树等响应鼠标、键盘等?,回顾关键词:字节流(InputStreamOutputStream)、字符流(ReaderWriter)、File、对象序列化()、java中的字符编码(UnicodeUTF-8UTF-16),小节安排,图形用户界面编程,9.3、菜单和工具条,9.5、组件常用方法,9.1、AWT与Swing,9.2、容器:JFrameJPanelJScr
2、ollPaneJSplitPane,9.6、布局管理器,9.7、事件处理模型,9.4、基本组件:JLabelJButtonJComboBoxJTree等,9.8、鼠标事件处理,9.9、事件适配器类,9.10、键盘事件处理,、AWT和Swing,AWT(Abstract Windowing Toolkit)是Java早期(JDK1.0)的GUI标准API 重量级组件在90年代,程序员中流传着一个笑话:Java的真正信条是一次编写,到处测试(Write Once,Test Everywhere)。导致这种糟糕局面的一个可能原因据说是AWT从概念产生到完成实现只用了一个月。,import;impor
3、t;public class TestAWT extends Framepublic TestAWT(String str)super(str);public static void main(String args)TestAWT fr=new TestAWT(Hello AWT Frame!);/设置Frame的大小,缺省为(0,0)fr.setSize(400,300);/设置Frame的背景为红色fr.setBackground(Color.red);/设置Frame为可见,缺省为不可见fr.setVisible(true);,、AWT和Swing,Java 1.2开始,AWT被Swi
4、ng替代 Swing包含的组件的平台相关性较小,所以称为轻量级组件所在的包:javax.swing 由100%纯java实现的,、AWT和Swing,、AWT和Swing,小节安排,图形用户界面编程,9.3、菜单和工具条,9.5、组件常用方法,9.1、AWT与Swing,9.2、容器:JFrameJPanelJScrollPaneJSplitPane,9.6、布局管理器,9.7、事件处理模型,9.4、基本组件:JLabelJButtonJComboBoxJTree等,9.8、鼠标事件处理,9.9、事件适配器类,9.10、键盘事件处理,、JFrame,、JFrame,/*我的第一个java窗口程
5、序,采用直接在main中创建窗口的方法*/import.*;import javax.swing.*;public class TestJFrameDirect,声明实例变量或类变量,定义实例方法或类方法,定义实例方法或类方法,、JFrame,/*我的第一个java窗口程序,采用直接在main中创建窗口的方法*/import.*;import javax.swing.*;public class TestJFrameDirect/*/以下为成员变量(对象)的定义/定义菜单static JMenuBar mb=new JMenuBar();/菜单栏static FgMenu mFile=new
6、FgMenu(文件(F),KeyEvent.VK_F);/文件菜单static JMenuItem miNew=new JMenuItem(新建(N),KeyEvent.VK_N),miOpen=new JMenuItem(打开(O).,KeyEvent.VK_O),miSave=new JMenuItem(保存(S),KeyEvent.VK_S),miFont=new JMenuItem(字体与颜色(F).,KeyEvent.VK_F),miQuit=new JMenuItem(退出(X),KeyEvent.VK_X);/*,、JFrame,import,JMenuBar mb/定义变量(菜
7、单)部分,public class TestJFrameDirectpublic static void main(String args)/:创建窗口对象,窗口标题通过构造方法传递进去JFrame frm=new JFrame(这是我的第一个窗口应用程序);/:添加组件。本例中直接添加菜单frm.setJMenuBar(mb);mFile.add(miNew);/新建mFile.add(miOpen);/打开mFile.add(miSave);/保存mFile.addSeparator();/分割条mFile.add(miFont);/字体与颜色菜单mFile.addSeparator();
8、/分割条mFile.add(miQuit);/退出mb.add(mFile);/将文件菜单添加到菜单栏上/:设置窗口位置和大小frm.setBounds(10,10,400,300);/设置close按钮的操作frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/:显示窗口frm.setVisible(true);,、JFrame,/自定义菜单class FgMenu extends JMenupublic FgMenu(String label)super(label);public FgMenu(String label,int nAcce
9、lerator)super(label);setMnemonic(nAccelerator);,、JPanel,JPanel是一种轻量级的中间容器,称为面板组件,可以在它上面添加其他组件(包括其他面板组件)。面板(JPanel)的大小随着其包含的组件多少而变大变小。,import;import;import javax.swing.*;public class TestJPanel extends JFramepublic TestJPanel(String sTitle)super(sTitle);setSize(400,300);/设置大小/获取窗口面板;Container c=getCo
10、ntentPane();c.setBackground(Color.RED);/窗口背景红色c.setLayout(null);/取消布局器JPanel pan=new JPanel();pan.setBackground(Color.YELLOW);/pan背景黄色pan.setSize(200,100);add(pan);/用add方法把面板pan添加到窗口中setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public static void main(String args)TestJPanel frm=new TestJPanel(JFra
11、me with JPanel);frm.setVisible(true);,、JScrollPanel,/*我的另一个java窗口程序,通过从JFrame继承得到自定义的窗口类:TestJFrameExtends*/import java.awt.*;import.*;import javax.swing.*;public class TestJFrameExtends extends JFrame/以下为成员变量(对象)的定义/此处定义菜单(与TestJFrameDirect.java中一样)JTextAreata=new JTextArea();/文本框TestJFrameExtends(
12、String sTitle)super(sTitle);/:添加组件。本例中直接添加菜单与JTextAreaaddMenus();/添加带滚动条(JScrollPane)的文本编辑框JTextAreaJScrollPane sp=new JScrollPane(ta);add(sp);/:设置窗口大小setSize(400,300);/设置close按钮的操作setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/使窗口在显示屏居中显示centerWindow();/改变窗口图标Toolkit tk=getToolkit();/得到一个Toolkit对象
13、 Image icon=tk.getImage(online.gif);/获取图标setIconImage(icon);,、JScrollPanel,/添加菜单private void addMenus()setJMenuBar(mb);mFile.add(miNew);/新建/./窗口居中public void centerWindow()/获得显示屏桌面窗口的大小Toolkit tk=getToolkit();Dimension dm=tk.getScreenSize();/让窗口居中显示setLocation(int)(dm.getWidth()-getWidth()/2,(int)(d
14、m.getHeight()-getHeight()/2);public static void main(String args)/:创建窗口对象TestJFrameExtends frm=new TestJFrameExtends(这是我的另一个java窗口程序);/:显示窗口frm.setVisible(true);/这里省略了FgMenu类的定义,、JScrollPanel,、JScrollPanel,、JSplitPane,/*分割条示例*/import javax.swing.*;import java.awt.*;public class TestJSplitPanepublic
15、static void main(String args)JFrame fr=new JFrame(JFrame with JSplitPane);Container c=fr.getContentPane();JPanel leftPane=new JPanel();/左面板JPanel rightPane=new JPanel();/右面板/创建水平分割条,即分为左右两部分JSplitPane sp=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,leftPane,rightPane);sp.setDividerSize(5);/设置分割条本身的宽度为
16、5个像素leftPane.add(new JButton(left button);/将按钮添加到左边的面板rightPane.add(new JButton(right button);/将按钮添加到右边的面板c.add(sp);/将分割条(含左右两个带按钮的面板)添加到窗口上fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);fr.setSize(400,300);fr.setVisible(true);/以下语句须放在setVisible之后,否则不会起到效果sp.setDividerLocation(0.3);/左边占0.3(30%),右
17、边占0.7(70%),小节安排,图形用户界面编程,9.3、菜单和工具条,9.5、组件常用方法,9.1、AWT与Swing,9.2、容器:JFrameJPanelJScrollPaneJSplitPane,9.6、布局管理器,9.7、事件处理模型,9.4、基本组件:JLabelJButtonJComboBoxJTree等,9.8、鼠标事件处理,9.9、事件适配器类,9.10、键盘事件处理,、菜单组件:JMenuBar、JMenu、JMenuItem,、菜单组件:JMenuBar、JMenu、JMenuItem,菜单中的加速键,菜单(JMenu)或菜单项(JMenuItem)中所显示的带下划线的字
18、母即为对应的加速键字母。如前图所示,如果要通过加速键访问“保存(S)”菜单,首先按下ALT+F(文件菜单的加速键,JMenu),然后再按下S字母键即可(保存菜单项的加速键,JMenuItem)。父类的如下方法进行设置:public void setMnemonic(intmnemonic)其中 mnemonic为,XXX对应于相应的字母,如A、B、等。源文件加入:import.*;,、菜单组件:JMenuBar、JMenu、JMenuItem,例如:Import.*;/定义菜单变量(对象)JMenu mFile=new JMenu(文件(F);JMenuItem miNew=new JMenu
19、Item(新建(N),KeyEvent.VK_N),miOpen=new JMenuItem(打开(O);miFile.setMnemonic(KeyEvent.VK_F);miFile.add(miNew);miFile.add(miOpen);miOpen.setMnemonic(KeyEvent.VK_O);,、菜单组件:JMenuBar、JMenu、JMenuItem,菜单中的快捷键和图标,带加速键的菜单需要两步才能操作,快速键一次完成,如按下CTRL+S键即可触发保存菜单的功能 设置快捷键的方法定义在JMenuItem中,如下:public void setAccelerator(K
20、eyStrokekeyStroke)其中keyStroke则通常采用KeyStroke的如下静态方法获得。public static KeyStroke getKeyStroke(intkeyCode,intmodifiers)其中,keyCode是定义在中的虚拟键常量:而modifiers则是定义在中的修饰符常量:源文件加入:import.*;,、菜单组件:JMenuBar、JMenu、JMenuItem,例如:miNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_DOWN_MASK);miOpen
21、.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_DOWN_MASK|InputEvent.SHIFT_DOWN_MASK);ImageIcon icon=new ImageIcon(online.gif);miOpen.setIcon(icon);,、工具栏组件:JToolBar,(1)在JMenuBar对象创建的下一行创建工具栏对象:JToolBarmtb=new JToolBar();(2)自定义类FgButton如下:class FgButton extends JButtonpublic FgBu
22、tton()super();public FgButton(Icon icon)super(icon);public FgButton(Icon icon,String strToolTipText)super(icon);setToolTipText(strToolTipText);public FgButton(String text)super(text);public FgButton(String text,Icon icon,String strToolTipText)super(text,icon);setToolTipText(strToolTipText);,、工具栏组件:J
23、ToolBar,(3)添加addToolBar()方法:private void addToolBar()/工具条Container c=getContentPane();c.add(BorderLayout.NORTH,mtb);mtb.setLayout(new FlowLayout(FlowLayout.LEFT);FgButton btn=new FgButton(new ImageIcon(getClass().getResource(New.gif),新建文件),new FgButton(new ImageIcon(getClass().getResource(open.gif),
24、打开文件),new FgButton(new ImageIcon(getClass().getResource(save.gif),保存文件);for(int i=0;ibtn.length;i+)btni.setBorder(BorderFactory.createEmptyBorder();mtb.add(btni);/设置不可浮动mtb.setFloatable(false);(4)在构造方法中添加如下代码:addToolBar();,小节安排,图形用户界面编程,9.3、菜单和工具条,9.5、组件常用方法,9.1、AWT与Swing,9.2、容器:JFrameJPanelJScrollP
25、aneJSplitPane,9.6、布局管理器,9.7、事件处理模型,9.4、基本组件:JLabelJButtonJComboBoxJTree等,9.8、鼠标事件处理,9.9、事件适配器类,9.10、键盘事件处理,、JLabel,import java.awt.*;import javax.swing.*;public class TestJLabel extends JFramepublic TestJLabel()super(JFrame with JLabel);/三个标签上的文字String s=第一个标签,文字在图标的左侧,文字在图标的下方;ImageIcon ic=null,new
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图形 用户界面 编程

链接地址:https://www.31ppt.com/p-5341502.html