您好,欢迎访问三七文档
字体对话框12004308杨艳12004307杜江海12004301王薇第九章组件及事件处理主要内容JavaSwing概述窗口常用组件与布局处理事件使用MVC结构对话框树组件与表格组件按钮绑定到键盘发布GUI程序对话框JDialog类和JFrame都是Window的子类,二者的实例都是底层容器,但有相似之处也有不同之处。对话框分为无模式和有模式两种。有模式的对话框:当这个对话框处于激活状态时,只让程序响应对话框内部的事件,而且将堵塞其它线程的执行,用户不能再激活对话框所在程序中的其它窗口,直到该对话框消失不可见。无模式的对话框:当这个对话框处于激活状态时,能再激活其它窗口,也不堵塞其它线程的执行。消息对话框消息对话框是有模式对话框,进行一个重要的操作动作之前,最好能弹出一个消息对话框。可以用javax.swing包中的JOptionPane类的静态方法:publicstaticvoidshowMessageDialog(ComponentparentComponent,Stringmessage,Stringtitle,intmessageType)创建一个消息对话框。例:输入对话框输入对话框含有供用户输入文本的文本框、一个确认和取消按钮,是有模式对话框。当输入对话框可见时,要求用户输入一个字符串。可以用javax.swing包中的JOptionPane类的静态方法:publicstaticStringshowInputDialog(ComponentparentComponent,Objectmessage,Stringtitle,intmessageType)创建一个输入对话框。例:确认对话框确认对话框是有模式对话框。可以用javax.swing包中的JOptionPane类的静态方法:publicstaticintshowConfirmDialog(ComponentparentComponent,Objectmessage,Stringtitle,intoptionType)得到一个确认对话框。例:颜色对话框可以用javax.swing包中的JColorChooser类的静态方法:publicstaticColorshowDialog(Componentcomponent,Stringtitle,ColorinitialColor)创建一个有模式的颜色对话框。例:自定义对话框创建对话框与创建窗口类似,通过建立JDialog的子类来建立一个对话框类,然后这个类的一个实例,即这个子类创建的一个对象,就是一个对话框。对话框是一个容器,它的默认布局是BorderLayout,对话框可以添加组件,实现与用户的交互操作。构造对话框的2个常用构造方法JDialog()构造一个无标题的初始不可见的对话框,对话框依赖一个默认的不可见的窗口,该窗口由Java运行环境提供。JDialog(JFrameowner)构造一个无标题的初始不可见的无模式的对话框,owner是对话框所依赖的窗口,如果owner取null,对话框依赖一个默认的不可见的窗口,该窗口由Java运行环境提供。例:实验4字体对话框1.相关知识点创建对话框与创建窗口类似,通过创建JDialog的子类来建立一个对话框,然后创建这个类的一个实例,即这个子类创建的一个对象,就是一个对话框。对话框分为无模式和有模式两种。如果一个对话框是有模式的对话框,那么当这个对话框处于激活状态时,只让程序响应对话框内部的事件,程序不能再激活它所依赖的窗口或组件,而且它将阻塞其他线程的执行,直到该对话框消失不见。无模式对话框处于激活状态时,程序仍能激活它所依赖的窗口或组件,它也不堵塞线程的执行。2.实验目的学习使用对话框3.实验要求编写一个FontFamily类,该类对象可以获取当前机器可用的全部字体名称。编写一个JDialog的子类FontDialog,该类为FontFamily对象维护的数据提供视图,要求FontDialog对象使用下拉列表显示FontFamily对象维护的全部字体的名称,当选择下拉列表中某个字体名称后,FontDialog对象使用标签显示该字体的效果。要求对话框提供返回下拉列表中所选则的字体名称的方法编写一个窗口,该窗口设有“设置字体”按钮和一文本区对象,当单机该按钮时,弹出一个FontDialog创建的对话框,然后根据用户在对话框下拉列表中选择的字体来显示文本区中的文本。实验程序FontDialogMainClass.javapublicclassFontDialogMainClass{publicstaticvoidmain(Stringargs[]){FrameHaveDialogwin=newFrameHaveDialog();}}FontFamilyNames.javaimportjava.awt.GraphicsEnvironment;publicclassFontFamilyNames{StringallFontNames[];publicString[]getFontName(){GraphicsEnvironmentge=GraphicsEnvironment.getLocalGraphicsEnvironment();allFontNames=ge.getAvailableFontFamilyNames();returnallFontNames;}}FontDialog.javaimportjava.awt.event.*;importjava.awt.*;importjavax.swing.*;publicclassFontDialogextendsJDialogimplementsItemListener,ActionListener{FontFamilyNamesfontFamilyNames;intfontSize=38;StringfontName;JComboBoxfontNameList,fontSizeList;JLabellabel;Fontfont;JButtonyes,cancel;staticintYES=1,NO=0;intstate=-1;FontDialog(JFramef){super(f);setTitle(字体对话框);font=newFont(宋体,Font.PLAIN,12);fontFamilyNames=newFontFamilyNames();setModal(true);yes=newJButton(Yes);cancel=newJButton(cancel);yes.addActionListener(this);cancel.addActionListener(this);label=newJLabel(hello,奥运,JLabel.CENTER);fontNameList=newJComboBox();fontSizeList=newJComboBox();Stringname[]=fontFamilyNames.getFontName();fontNameList.addItem(字体);for(intk=0;kname.length;k++)fontNameList.addItem(name[k]);fontSizeList.addItem(大小);for(intk=8;k72;k=k+2)fontSizeList.addItem(newInteger(k));fontNameList.addItemListener(this);fontSizeList.addItemListener(this);JPanelpNorth=newJPanel();pNorth.add(fontNameList);pNorth.add(fontSizeList);add(pNorth,BorderLayout.NORTH);add(label,BorderLayout.CENTER);JPanelpSouth=newJPanel();pSouth.add(yes);pSouth.add(cancel);add(pSouth,BorderLayout.SOUTH);setDefaultCloseOperation(DISPOSE_ON_CLOSE);validate();}publicvoiditemStateChanged(ItemEvente){if(e.getSource()==fontNameList){fontName=(String)fontNameList.getSelectedItem();font=newFont(fontName,Font.PLAIN,fontSize);}elseif(e.getSource()==fontSizeList){Integerm=(Integer)fontSizeList.getSelectedItem();fontSize=m.intValue();font=newFont(fontName,Font.PLAIN,fontSize);}label.setFont(font);label.repaint();validate();}publicvoidactionPerformed(ActionEvente){if(e.getSource()==yes){state=YES;setVisible(false);}elseif(e.getSource()==cancel){state=NO;setVisible(false);}}publicintgetState(){returnstate;}publicFontgetFont(){returnfont;}}FrameHaveDialog.javaimportjava.awt.event.*;importjava.awt.*;importjavax.swing.*;publicclassFrameHaveDialogextendsJFrameimplementsActionListener{JTextAreatext;JButtonbuttonFont;FrameHaveDialog(){buttonFont=newJButton(设置字体);text=newJTextArea(Java2实用教程(第4版));buttonFont.addActionListener(this);add(buttonFont,BorderLayout.NORTH);add(text);setBounds(60,60,300,300);setVisible(true);validate();setDefaultCloseOperation(DISPOSE_ON_CLOSE);}publicvoidactionPerformed(ActionEvente){if(e.getSource()==buttonFont){FontDialogdialog=newFontDialog(this);dialog.setVisible(true);if(dialog.getState()==FontDialog.YES){text.setFont(dialog.getFont());text.repaint();}if(dialog.getState()==FontDialog.NO){text.repaint();}}}}实验结果实验感悟整体实验内容虽然说有点复杂,但只要先在理解教课书上有关对话框这一部分内容的基础上,根据实验书上的程序仔细输入,做到尽量理解、掌握每一处程序的意义、用处,遇到不懂之处可以查阅一下书籍,其实教科书上的每小节内容会在实验中体现。就比如此次实验,完成下来我们印象最深的就是书上一开始所讲的对话框分为无模式和有模式两种。如果一个对话框是有模式的对话框,那么当这个对话框处于激活状态时,只让程序响应对话框内部的事件,程序不能再激活它所依赖的窗口或组件,而且它
本文标题:Java
链接地址:https://www.777doc.com/doc-5607513 .html