欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    图形用户界面编程.ppt

    • 资源ID:5341502       资源大小:4.49MB        全文页数:144页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    图形用户界面编程.ppt

    ,第九章 图形用户界面编程,计算机网络与多媒体研究所计算机科学与技术、软件学院浙江工业大学,高家全 Cell:Email:,前言,本章的目的:图形用户界面(GUI)程序包括哪些元素?如何开发图形用户界面程序?如何让界面上的按钮、下拉框、树等响应鼠标、键盘等?,回顾关键词:字节流(InputStreamOutputStream)、字符流(ReaderWriter)、File、对象序列化()、java中的字符编码(UnicodeUTF-8UTF-16),小节安排,图形用户界面编程,9.3、菜单和工具条,9.5、组件常用方法,9.1、AWT与Swing,9.2、容器:JFrameJPanelJScrollPaneJSplitPane,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;import;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被Swing替代 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窗口程序,采用直接在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 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/定义变量(菜单)部分,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();/分割条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 nAccelerator)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=getContentPane();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(JFrame 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(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对象 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)(dm.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 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);/设置分割条本身的宽度为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%),右边占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)中所显示的带下划线的字母即为对应的加速键字母。如前图所示,如果要通过加速键访问“保存(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 JMenuItem(新建(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(KeyStrokekeyStroke)其中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.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 FgButton()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);,、工具栏组件:JToolBar,(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),打开文件),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、容器:JFrameJPanelJScrollPaneJSplitPane,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 ImageIcon(online.gif),new ImageIcon(save.gif);/三个标签在水平方向上的对齐方式int ih=0,JLabel.LEFT,JLabel.CENTER;/三个标签在垂直方向上的对齐方式int iv=0,JLabel.CENTER,JLabel.BOTTOM;Container c=getContentPane();/取得窗口的内容面板c.setLayout(new FlowLayout(FlowLayout.LEFT);/设置布局管理器,、JLabel,for(int i=0;i0)myLabel.setHorizontalTextPosition(ihi);myLabel.setVerticalTextPosition(ivi);/设置边框,setBorder来自JLabel的父类JComponentmyLabel.setBorder(BorderFactory.createLineBorder(Color.RED,2);myLabel.setToolTipText(第+(i+1)+个标签);/加入到窗口的内容面板中c.add(myLabel);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(400,300);public static void main(String args)TestJLabel frm=new TestJLabel();frm.setVisible(true);,、单行文本框:JTextField和JPasswordField,import java.awt.*;import javax.swing.*;public class TestJTextFieldpublic static void main(String args)JFrame frm=new JFrame(JFrame with JTextField);frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frm.setSize(260,100);Container c=frm.getContentPane();c.setLayout(new FlowLayout();JTextField t=new JTextField(2012103088,15),new JPasswordField(1234567890,15);c.add(new JLabel(用户名:);c.add(t0);c.add(new JLabel(密 码:);c.add(t1);t0.setEditable(false);/用户名设置为只读frm.setVisible(true);,、按钮:JButtom、JCheckBox和JRadioButton,import java.awt.*;import javax.swing.*;public class TestJButton extends JFrameTestJButton(String sTitle)super(sTitle);Container c=getContentPane();c.setLayout(new FlowLayout();/两个按钮上的图标ImageIcon ic=new ImageIcon(new.gif),new ImageIcon(online.gif);/三个按钮JButton btn=new JButton(新建,ic0),new JButton(中间),new JButton(打开,ic1);int i;for(i=0;ibtn.length;i+)c.add(btni);/btn0的文字在图标左侧btn0.setHorizontalTextPosition(SwingConstants.LEFT);/两个复选框JCheckBox ck=new JCheckBox(左),new JCheckBox(右);for(i=0;ick.length;i+)c.add(cki);cki.setSelected(true);/将复选框设置为选中状态,、按钮:JButtom、JCheckBox和JRadioButton,/两个单选框JRadioButton r=new JRadioButton(左),new JRadioButton(右);ButtonGroup rg=new ButtonGroup();for(i=0;i r.length;i+)c.add(ri);rg.add(ri);/组成ButtonGroup,这样二者只能同时选中一项/设置单选框的选择状态r0.setSelected(true);r1.setSelected(false);setSize(300,150);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public static void main(String args)TestJButton frm=new TestJButton(JFrame with JButton);frm.setVisible(true);,、下拉框:JComboBox,import java.awt.*;import javax.swing.*;public class TestJComboBox extends JFrame/字体与大小下拉框JComboBox cbxFont=new JComboBox();JComboBox cbxFontSize=new JComboBox();/字体大小TestJComboBox(String sTitle)super(sTitle);Container c=getContentPane();c.setLayout(new FlowLayout(FlowLayout.LEFT);c.add(new JLabel(字体名称:);c.add(cbxFont);c.add(new JLabel(字体大小:);c.add(cbxFontSize);/初始化字体与大小下拉框InitFonts();setSize(300,120);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);,、下拉框:JComboBox,/初始化字体框private void InitFonts()/获得系统的字体数组GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();String fontList=ge.getAvailableFontFamilyNames();int i;/添加字体名称for(i=0;ifontList.length;i+)cbxFont.addItem(String.valueOf(i)+|+fontListi);cbxFont.setSelectedIndex(231);/选择index为30的项/添加字体大小for(i=9;i=72;i+)cbxFontSize.addItem(new Integer(i).toString();cbxFontSize.setSelectedIndex(3);/选择index为3的项public static void main(String args)TestJComboBox frm=new TestJComboBox(JFrame with JComboBox);frm.setVisible(true);,、列表框:JList,import java.awt.*;import javax.swing.*;public class TestJList extends JFrame/声明列表框对象JList listNames=new JList();TestJList(String sTitle)super(sTitle);Container c=getContentPane();/以下语句保证列表框数据较多时会出现滚动条JScrollPane scrollPane=new JScrollPane(listNames);c.add(scrollPane);/初始化列表框InitFonts();setSize(250,150);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);,、列表框:JList,/初始化列表框private void InitFonts()String names=201126100101-曹帝胄,201126100111-洪峰,201126100128-徐华鹏,201126100131-姚臻平,201126100202-陈思行,201126100207-姜楠,201126100210-林一民,201126100211-林泽伟;/用数组填充列表框listNames.setListData(names);/将1、3的项(201126100111和201126100131)设置为选择状态listNames.setSelectedIndices(new int1,3);public static void main(String args)TestJList frm=new TestJList(JFrame with JList);frm.setVisible(true);,、多行文本框:JTextArea,、多行文本框:JTextArea,、表格组件:JTable,import;import;import;import;import;import;import;import;public class TestJTablepublic static void main(String args)JTable table1=new JTable(12,6);/12行6列的空表格/定义列名与行数据,其中列名最好用final修饰final Object columnNames=姓名,性别,家庭地址,电话号码,生日;Object rowData=张国伟,男,浙江杭州,1378313210,1985-03-24,叶苛,女,浙江金华 程陈,男,江苏南京 曹艳,女,浙江温州,81513779,1986-10-01,刘飞,男,浙江宁波/创建表格JTable table2=new JTable(rowData,columnNames);,、表格组件:JTable,/设置表格属性table2.setRowHeight(30);/设置每行的高度为30table2.setRowHeight(0,20);/设置第1行的高度为20,作为区别table2.setRowMargin(5);/设置相邻两行的距离table2.setRowSelectionAllowed(true);/设置可否被选择,默认为falsetable2.setSelectionBackground(Color.BLUE);/设置所选择行的背景颜色table2.setSelectionForeground(Color.WHITE);/设置所选择行的前景色table2.setGridColor(Color.BLACK);/设置网格线的颜色table2.setRowSelectionInterval(0,2);/设置初始的选择行(1到3行)table2.setShowHorizontalLines(false);/是否显示水平的网格线table2.setShowVerticalLines(true);/是否显示垂直的网格线table2.setValueAt(无名氏,0,0);/设置某个单元格的值,这个值是一个对象table2.doLayout();table2.setBackground(Color.lightGray);/设置表格背景色,、表格组件:JTable,/设置表格的大小table2.setPreferredScrollableViewportSize(new Dimension(600,100);/创建窗口中将要用到的面板JScrollPane pane1=new JScrollPane(table1);JScrollPane pane2=new JScrollPane(table2);JPanel pan=new JPanel(new GridLayout(0,1);pan.setPreferredSize(new Dimension(600,250);pan.setBackground(Color.black);pan.add(pane1);pan.add(pane2);/创建窗口JFrame frm=new JFrame(JFrame with JTable);frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frm.setContentPane(pan);frm.pack();frm.setVisible(true);,、树形组件:JTree,根节点,分支节点,折叠节点,展开节点,叶子节点,、树形组件:JTree,import;import;import;import;import;import;import;import;import;import;import;import;public class TestJTreepublic static void main(String args)JFrame frm=new JFrame(JFrame with JTree);/构造方法:JTree()JTree example1=new JTree();/构造方法:JTree(Object value)Object letters=a,b,c,d,e;JTree example2=new JTree(letters);/构造函数:JTree(TreeNode root),但是root为一个空节点DefaultMutableTreeNode node1=new DefaultMutableTreeNode();/定义树节点/用此树节点做参数调用 JTree的构造函数创建含有一个根节点的树JTree example3=new JTree(node1);,、树形组件:JTree,/构造函数:JTree(TreeNode root)(同上,只是root非空)/用一个根节点创建树 DefaultMutableTreeNode node2=new DefaultMutableTreeNode(Color);JTree example4=new JTree(node2);/节点颜色默认为白底黑字 example4.setBackground(Color.lightGray);/设置节点的背景颜色/构造函数:JTree(TreeNode root,boolean asksAllowsChildren)/使用DefaultMutableTreeNode类先用根结点创建树,设置为可添加孩子结点,/再添加孩子结点 DefaultMutableTreeNode color=new DefaultMutableTreeNode(Color,true);DefaultMutableTreeNode gray=new DefaultMutableTreeNode(Gray);color.add(gray);color.add(new DefaultMutableTreeNode(Red);gray.add(new DefaultMutableTreeNode(Lightgray);gray.add(new DefaultMutableTreeNode(Darkgray);color.add(new DefaultMutableTreeNode(Green);JTree example5=new JTree(color);,、树形组件:JTree,/构造函数:JTree(TreeNode root)(同上,只是root非空)/先创建各个节点 DefaultMutableTreeNode biology=new DefaultMutableTreeNode(Biology);DefaultMutableTreeNode animal=new DefaultMutableTreeNode(Animal);DefaultMutableTreeNode mammal=new DefaultMutableTreeNode(Mammal);DefaultMutableTreeNode horse=new DefaultMutableTreeNode(Horse);mammal.add(horse);animal.add(mammal);biology.add(animal);/根据创建好的节点创建树JTree example6=new JTree(biology);/获取并显示mammal的路径TreePath p=new TreePath(mammal.getPath();example6.expandPath(p);JOptionPane.showMessageDialog(frm,p.toString(),Path of Mammal TreeNode,JOptionPane.INFORMATION_MESSAGE);,、树形组件:JTree,/将这些树添加到窗口面板中JPanel pan=new JPanel();pan.setLayout(new BoxLayout(pan,BoxLayout.X_AXIS);pan.setPreferredSize(new Dimension(600,200);pan.add(new JScrollPane(example1);pan.add(new JScrollPane(example2);pan.add(

    注意事项

    本文(图形用户界面编程.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开