欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    图形界面设计1.pptx

    • 资源ID:77573553       资源大小:859.07KB        全文页数:125页
    • 资源格式: PPTX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

    图形界面设计1.pptx

    1.组件和容器2.GUI(图形用户界面)布局管理器3.事件处理(举例:一个计算器的图形界面的程序)图形界面设计图形界面设计第1页/共125页1组件和容器Java库提供两种类型的组件第一代组件Java.AWT组件(Abstract Window Toolkit)(适合Applet小程序)第二代组件Javax.Swing组件第2页/共125页AWT的核心内容是组件和容器组件通常为图形用户界面中的可见部分,例如按钮(button)和标签(label)等通过add()方法可将组件加入容器并显示出来。容器是图形用户界面中容纳其他组件的部件,一个容器中可容纳组件或容器。常见容器:对话框(Dialog)、框架(Frame)、窗口(Window)和面板(Panel)。第3页/共125页组件自身不能构成独立的图形界面,必须放到容器对象中。组件和容器的关系组件和容器的关系组件的定位n容器中组件的位置由容器的布局管理器(Layout Manager)决定。第4页/共125页列表列表按钮按钮菜单菜单container另一个窗口另一个窗口窗口,对话框窗口,对话框container第5页/共125页基本组件和容器的类层次JContainerJWindowJPanelJComponentJFrameJDialogJAppletJButtonJMenuJCheckboxJTextfield第6页/共125页常见的的容器常用的容器有:对话框(JDialog)、框架(JFrame)、窗口(JWindow)和面板(JPanel)。JContainerJWindowJFrameJDialogJAppletJPanel第7页/共125页创建简单框架FrameFrame框架(Frame)类是Window类的子类,它是一种带标题框并且可以改变大小的窗口。构造方法Frame(String)可以创建Frame的实例,它带有标题框,构造方法中的String型参数指定了标题内容。第8页/共125页import java.awt.*;public class MyFrame extends Framepublic static void main(String args)MyFrame fr=new MyFrame(HelloOutThere!);fr.setSize(400,200);fr.setBackground(Color.blue);fr.setVisible(true);public MyFrame(String str)super(str);.这里调用来自Component类的setSize()方法第9页/共125页使 用 从 Component类 继 承 过 来 的 setSize()方法可以改变Frame实例的大小。必须调用setVisible()方法和setSize()方法才能使Frame的实例可见。第10页/共125页创建面板面板(Panel)与框架类似,也是一种容器,可以容纳其他GUI组件。当一个Panel对象被创建之后,使用Container类的add()方法将它加入到某个Window对象或Frame对象中。第11页/共125页面板示例import java.awt.*;public class FrameWithPanel extends Frame public FrameWithPanel(String str)super(str);public static void main(String args)FrameWithPanel fr=new FrameWithPanel(Frame with Panel);Panel pan=new Panel();构造函数第12页/共125页 fr.setSize(300,200);fr.setBackground(Color.blue);fr.setLayout(null);pan.setSize(100,100);pan.setBackground(Color.yellow);fr.add(pan);fr.setVisible(true);第13页/共125页Javax.swing.JFrame例程:import java.awt.*;import javax.swing.*;public class MyJFrame extends JFramepublic MyJFrame(String str)super(str);public static void main(String args)MyJFrame fr=newMyJFrame(MyJframe);nJFrame=Frame+Container第14页/共125页 Container con=fr.getContentPane();/获得面板 fr.setSize(300,300);con.setBackground(Color.red);JPanel pan=new JPanel();pan.setSize(100,100);pan.setBackground(Color.yellow);con.setLayout(null);con.add(pan);fr.setVisible(true);第15页/共125页常见的组件JContainerJComponentJButtonJMenuJCheckboxJTextfield第16页/共125页JButton组件JButton类 构造函数:JButton();JButton(String label)常见的方法:void setLabel(String Label)/设置按钮的标记 String getLabel()/获取按钮的标记取消取消确定确定第17页/共125页import javax.swing.*;import java.applet.Applet;public class MyJButton extends Applet public void init()JButton b1=new JButton(按钮1);JButton b2=new JButton();b2.setLabel(按钮2);add(b1);add(b2);第18页/共125页标签 JLabel类作用:一般显示提示信息,用户不能修改构造函数:public JLabel()JLabel(String s)JLabel(String s,int alignment)主要方法:String getString()/返回标签内容Void setText(String s)/设置标签文本String getAlignment()/返回标签得对齐方式第19页/共125页文本框JTextField类作用:生成一个单行文本域构造函数:JTextField()JTextField(String s)JTextField(int col)JTextField(String s,int col)主要方法:void setText(String t)String getText()/获取响应字符第20页/共125页综合例子import java.awt.*;import javax.swing.*;public class JLogin public static void main(String args)JFrame f=new JFrame(User Login);Container con=f.getContentPane();con.setBackground(Color.lightGray);con.setLayout(new FlowLayout();JLabel lb1=new JLabel(UserID);JTextField T1=new JTextField(linda,20);第21页/共125页 JLabel lb2=new JLabel(Password);JTextField T2=new JTextField(20);JButton b1=new JButton(OK);JButton b2=new JButton(Cancel);con.add(lb1);con.add(T1);con.add(lb2);con.add(T2);con.add(b1);con.add(b2);f.setSize(280,150);f.setVisible(true);第22页/共125页 文本域JTextAreaJTextAreaswing的JTextArea类可生成一个多行的文本域,内容超出显示范围时,具有滚动显示的功能。TextArea类的构造函数:1.public JTextArea(String text)2.public JTextArea(int rows,int columns)3.public JTextArea(String text,int rows,int columns)第23页/共125页TextArea类的常用方法:1.public void append(String str)2.public int getColumns()3.public int getRows()4.public void insert(String str,int pos)5.public void replaceRange(String str,int start,int end)注意:JTextArea和JList组件 必须放在JScrollpane中JFrameJScrollPanelJTextArea第24页/共125页程序举例:编写testJTextArea.java程序,通过文件输入流将该文件从硬盘读入内存并显示在多行文本框中第25页/共125页import java.awt.*;import javax.swing.*;import javax.swing.text.*;import java.io.*;public class testJTextArea public static void main(String args)testJTextArea obj=new testJTextArea();obj.testArea();public void testArea()JFrame frame=new JFrame(Test);Container con=frame.getContentPane();JTextArea ta=new JTextArea(5,30);/支持滚动的容器组件 JScrollPane pane=new JScrollPane(ta);con.add(pane,BorderLayout.CENTER);第26页/共125页 try /打开文件 FileReader Rin=new FileReader(“./testJTextArea.java);ta.read(Rin,null);catch(Exception e)System.exit(0);frame.setSize(200,200);/设置框架大小frame.setVisible(true);/显示框架 转到布局管理器转到布局管理器第27页/共125页复选框javax.Swing.JCheckBox构造函数:1.public JCheckBox(String S)2.public JCheckBox(String S,booleanselected)单选框单选框javax.Swing.JRadioButtonn构造函数:构造函数:1.public JRadioButton(String S)2.public JRadioButton(String S ,boolean selected)第28页/共125页作用:将相互独立的单选框构成一组,常用方法:1.public ButtonGroup()2.public void add(AbstractButton b):作用:将一个单选按钮加到ButtonGroup组件中。3.public int getButtoncount()4.public void remove(AbstractButton b)Javax.Swing.ButtonGroup类类第29页/共125页两种选择框举例import java.awt.*;import java.applet.Applet;import javax.swing.*;public class testJCheckRadioBox extends Applet JCheckBox jcb1,jcb2;JRadioButton jr1,jr2;第30页/共125页 ButtonGroup group1;JPanel p1;public void init()JPanel pCh=new JPanel();JPanel pRa=new JPanel();p1=new JPanel();jcb1=new JCheckBox(Computer,true);jcb2=new JCheckBox(English,true);jr1=new JRadioButton(female,true);jr2=new JRadioButton(male,false);第31页/共125页 ButtonGroup group=new ButtonGroup();group.add(jr1);group.add(jr2);/不能将group加入到applet。p1.setLayout(new GridLayout(2,1);pCh.add(jcb1);pCh.add(jcb2);pRa.add(jr1);pRa.add(jr2);p1.add(pCh);p1.add(pRa);add(p1);PChPRa第32页/共125页列表框:JList类(1)Jlist组件必须放在JScrollPane中,否则不具滚动功能。(2)构造函数public JList()Public Jlist(Object object)第33页/共125页import java.awt.*;import javax.swing.*;public class testJList public static void main(String args)testJList obj=new testJList();obj.testJList();public void testJList()String book=Java,C+,Fortrain,DataBase,OperationSystem;JList list1=new JList(book);JFrame frame=new JFrame(TestList);Container con=frame.getContentPane();JScrollPane sp=new JScrollPane(list1);con.setLayout(new BorderLayout();con.add(sp,Center);frame.setSize(50,100);frame.setVisible(true);第34页/共125页菜单制作JMenuBar类Jmenu类JmenuItem类第35页/共125页简单的菜单程序import javax.swing.*;public class testJMenu extends JFrameJMenuBar bar;JMenu fileMenu;JMenuItem InputMItem,modifyMItem;JMenuItem queryMItem,deleteMItem;testJMenu(String s)super(s);bar=new JMenuBar();fileMenu=new JMenu(菜单选项);第36页/共125页Input Item=new JMenuItem(录入学生信息);modifyMItem=new JMenuItem(修改学生信息);queryMItem=new JMenuItem(查询学生信息);deleteMItem=new JMenuItem(删除学生信息);fileMenu.add(InputMItem);fileMenu.add(modifyMItem);fileMenu.add(queryMItem);fileMenu.add(deleteMItem);bar.add(fileMenu);This.setJMenuBar(bar);setVisible(true);public static void main(String args)testJMenu s=new testJMenu(菜单窗体);第37页/共125页弹出式菜单第38页/共125页JPopupMenu JMenuItem第39页/共125页弹出式菜单的简单程序import javax.swing.*;import java.awt.*;public class pop2 JFrame f;JPopupMenu popUp;JMenuItem openMItem,copyMItem,pasteMItem;public pop2()f=new JFrame(弹出菜单);popUp=new JPopupMenu(File);openMItem=new MenuItem(open);copyMItem=new JMenuItem(copy);pasteMItem=new JMenuItem(paste);第40页/共125页 popUp.add(openMItem);popUp.add(copyMItem);popUp.add(pasteMItem);f.setSize(300,200);f.setVisible(true);popUp.show(f,100,100);public static void main(String args)pop2 s=new pop2();转到转到3事件处理事件处理第41页/共125页第九章 二、二、GUIGUI布局管理器布局管理器第42页/共125页01243401534第43页/共125页一个简单的例子import java.awt.*;public class ExGui private Frame f;private Button b1;private Button b2;public static void main(String args)ExGui that=new ExGui();that.go();第44页/共125页public void go()f=new Frame(GUI example);f.setLayout(new FlowLayout();b1=new Button(Press me);b2=new Button(Dont press Me);f.add(b1);f.add(b2);f.pack();f.setVisible(true);第45页/共125页Java语言中包含以下几种布局管理器:FlowLayout(流布局)Panel类和Applet类的默认布局管理器。BorderLayout(边框布局)Window类、Dialog类和Frame类的默认布局管理器。GridLayout(网格布局)CardLayout(卡片布局)GridBagLayout(网格包布局)第46页/共125页FlowLayout布局管理器 FolowLayout(Applet、Panel和Jpanel);作用作用:将组件按加入的先后顺序从左至右,由上而下排列;FlowLayoutFlowLayout布局的对齐方式:布局的对齐方式:采用三个常量表示采用三个常量表示:FlowLayout.LEFT FlowLayout.RIGHT FlowLayout.CENTER第47页/共125页FlowLayout.CENTERFlowLayout.LEFTFlowLayout.RIGHT第48页/共125页常用构造函数如下:1 public FlowLayout()/默认居中对齐,垂直和水平间隔为5。2.public FlowLayout(int align )/指定对齐方式的FlowLayout构造函数例:FlowLayout(FlowLayout.LEFT)第49页/共125页import java.awt.*;public class MyFlow private Frame f;private Button button1,button2,button3;public static void main(String args)MyFlow mflow=new MyFlow();mflow.go();第50页/共125页public void go()f=new Frame(Flow 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(100,100);f.setVisible(true);第51页/共125页BorderLayout布局BorderLayout布局是将空间划分为东、西、南、北、中五个区域;表示为:East、West、South、North和Center。第52页/共125页BorderLayout的构造函数如下:1.public BorderLayout()/组件的垂直和水平间隔为0。2.public BorderLayout(int hgap,int vgap)如:将一个按钮加到框架的南部f=newFrame(FrameTitle);b=newButton(PressMe);f.add(b,South);第53页/共125页程序举例import java.awt.*;public class ExGui2 private Frame f;private Button be,bw,bn,bs,bc;public static void main(String args)ExGui2 that=new ExGui2();that.go();void go()f=new Frame(Border Layout);be=new Button(East);bs=new Button(South);第54页/共125页 bw=new Button(West);bn=new Button(North);bc=new Button(Center);/f.setLayout(new BorderLayout();/Frame 默认的布局方式BorderLayoutf.add(be,East);f.add(bs,South);f.add(bw,West);f.add(bn,North);f.add(bc,Center);f.setSize(350,200);f.setVisible(true);第55页/共125页GridLayout布局管理器GridLayout(网格式的布局管理器)将容器空间划分成若干行乘若干列的网格,组件从左往右,由上而下依次放入其中,每个组件占据一格。第56页/共125页GridLayout类的构造函数:1.public GridLayout()/生成一个行数为1的GridLayout布局管理器对象。2.public GridLayout(int rows,int cols)3.public GridLayout(int rows,int cols,int hgap,int vgap)如:new GridLayout(3,2),可以创建一个三行乘两列的布局管理器。第57页/共125页import java.awt.*;public class GridEx private Frame f;private Button b1,b2,b3,b4,b5,b6;public static void main(String args)GridEx that=new GridEx();that.go();void go()f=new Frame(Gridexample);f.setLayout(new GridLayout(3,2);第58页/共125页b1=new Button(b1);b2=new Button(b2);b3=new Button(b3);b4=new Button(b4);b5=new Button(b5);b6=new Button(b6);f.add(b1);f.add(b2);f.add(b3);f.add(b4);f.add(b5);f.add(b6);f.pack();f.setVisible(true);f.setLayout(new GridLayout(3,2,10,10);第59页/共125页CardLayout布局管理器CardLayout是一种卡片式的布局管理器,它将容器中的组件处理为一系列卡片,每一时刻只显示出其中的一张。(略)第60页/共125页第61页/共125页package graph;import java.awt.*;import java.awt.event.*;public class CardLayoutDemo extends Frame String names=white,red,yellow;Color colors=Color.WHITE,Color.RED,Color.YELLOW;Label labels=new Label3;Button buttons=new Button3;Panel northP=new Panel();Panel centerP=new Panel();Panel cardP=new Panel3;GridLayout gridLay=new GridLayout(1,3);CardLayout cardLay=new CardLayout();ActionListener Listener=new ActionListener()public void actionPerformed(ActionEvent event)Button button=(Button)event.getSource();cardLay.show(centerP,button.getLabel();第62页/共125页public CardLayoutDemo(String title)super(title);northP.setLayout(gridLay);centerP.setLayout(cardLay);for(int i=0;ibuttons.length;i+)buttonsi=new Button(namesi);buttonsi.addActionListener(Listener);labelsi=new Label(+i);northP.add(buttonsi);cardPi=new Panel();cardPi.setBackground(colorsi);cardPi.add(labelsi);centerP.add(cardPi,namesi);add(northP,BorderLayout.NORTH);add(centerP,BorderLayout.CENTER);setSize(300,300);setVisible(true);public static void main(String args)new CardLayoutDemo(Hello);第63页/共125页举例1:计算器的界面设计FrameTextFieldPane第64页/共125页import java.awt.*;public class calculate2 Button key0,key1,key14,key15;TextField txtAnswer;Panel p;Frame f;public static void main(String args)calculate2 calGUI=new calculate2();calGUI.go();第65页/共125页public void go()f=new Frame(“计算器”);p=new Panel();txtAnswer=new TextField(0,20);key0=new Button(0);key15=new Button(.);p.setLayout(new GridLayout(4,4);p.add(key0);p.add(key15);f.setSize(200,200);f.setLayout(new BorderLayout();/默认BorderLayout f.add(txtAnswer,“North”);f.add(p,South);f.setVisible(true);第66页/共125页n2图形界面布局举例图形界面布局举例2nComponentExp.java第67页/共125页n如何布局呢?如何布局呢?nScrollPaneln Paneln固定宽度的PanelnScrollnPaneln固定尺寸的panel第68页/共125页 frame.getContentPane().add(sclpan_All,Center);sclpan_All.getViewport().add(pan_All);pan_All.setLayout(new BorderLayout();/左右分列 pan_All.add(pan_Right,East);/右边 pan_All.add(pan_Left,Center);pan_Right.setLayout(new BorderLayout();pan_Right.add(pan_RightUp,North);pan_Right.add(pan_RightDown,Center);/用一个pane充满整个右下角;第69页/共125页 pan_RightUp.setLayout(new GridLayout(6,1);pan_RightUp.add(txt_ID);pan_RightUp.add(txt_Name);pan_RightUp.add(pane_Sex);pan_RightUp.add(cmb_Province);pan_RightUp.add(cmb_City);pan_RightUp.add(new JButton(ok);frame.setSize(50,100);frame.setVisible(true);第70页/共125页有时需要设置JPanel的大小,而JPanel的setSize()方法不管用。在设置JPanel大小的时候,要用JPanel.setPreferredSize()这个方法才行例如:pLeft.setPreferredSize(new Dimension(300,400);第71页/共125页绘图操作:java.awt.Graphics类作用:作用:进行绘图操作进行绘图操作GraphicsGraphics类的常见方法类的常见方法:(1)(1)绘制字符串绘制字符串drawString(String str,int x,int y)drawString(String str,int x,int y)(2)(2)绘制线绘制线drawLine(x1,y1,x2,y2)drawLine(x1,y1,x2,y2)xy0第72页/共125页(3)(3)绘制矩形绘制矩形drawRec(x,y,width,height)drawRec(x,y,width,height)fillRec(x,y,width,height)fillRec(x,y,width,height)clearRect(x,y,width,heigth)/clearRect(x,y,width,heigth)/清除一个矩形清除一个矩形(4)(4)绘制椭圆绘制椭圆drawOval(x,y,width,height)drawOval(x,y,width,height)fillOval(x,y,width,height)fillOval(x,y,width,height)(5)(5)颜色管理颜色管理Color getColor()/Color getColor()/获取当前颜色获取当前颜色setColor(Color c)setColor(Color c)第73页/共125页绘图容器:Java.awt.Comonent的子类例例:Panel Frame AppletComonent类的两个方法()void paint(Graphics g)作用:在组件上使用g来绘图()repaint()作用:自动调用paint()方法重新绘图第74页/共125页如果声明的类本身就是Component的子类则覆盖paint(方法)import java.awt.*;public class testGraphic extends Frameextends Framepublic static void main(String args)testGraphic x=new testGraphic();x.setSize(100,100);x.setVisible(true);public void paint(Graphics g)g.drawLine(0,0,100,100);第75页/共125页n如果声明的类不是nComponent的子类呢?第76页/共125页使用getGraphics()方法获得Graphics对象import java.awt.*;public class testGraphics2 public static void main(String args)Frame f=new Frame(myframe);f.setVisible(true);f.setSize(100,100);Graphics g=f.getGraphics();g.drawLine(0,0,100,100);第77页/共125页举例:举例:显示时间和日期介绍两个类:1.类名:java.util.Date Date timeNow=new Date();Date tomorrow=new Date(2005,05,10)2.类名java.awt.Font Font msgFont=new Font(“TimesRoman”,Font.ITALIC,30);第78页/共125页import java.awt.*;import java.util.Date;public class showdateP extends Panel public static void main(String args)Frame f=new Frame(日期);showdateP SP =new showdateP();f.add(SP,“Center”);/SP是一个Panel f.setSize(500,100);f.setVisible(true);第79页/共125页public void paint(Graphics g)Date timeNow=new Date();Font msgFont=new Font(TimesRoman,Font.ITALIC,30);g.setFont(msgFont);g.setColor(Color.blue);g.drawString(timeNow.toString(),5,50);第80页/共125页nimport java.awt.*;import java.util.*;npublic class TestDraw extends Panel n pu

    注意事项

    本文(图形界面设计1.pptx)为本站会员(莉***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开