java 程序设计第13章.ppt

上传人:小飞机 文档编号:5435937 上传时间:2023-07-06 格式:PPT 页数:40 大小:273.99KB
返回 下载 相关 举报
java 程序设计第13章.ppt_第1页
第1页 / 共40页
java 程序设计第13章.ppt_第2页
第2页 / 共40页
java 程序设计第13章.ppt_第3页
第3页 / 共40页
java 程序设计第13章.ppt_第4页
第4页 / 共40页
java 程序设计第13章.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《java 程序设计第13章.ppt》由会员分享,可在线阅读,更多相关《java 程序设计第13章.ppt(40页珍藏版)》请在三一办公上搜索。

1、Swing包的特点,JDK1.2以后在支持javax.swing包 Swing包在图形界面设计上比AWT更丰富,更美观。Swing拥有4倍于AWT的用户界面组件。是AWT包基础上的扩展,在很多情况下在AWT包的部件前加上字母J即为Swing部件的名称,如:JFrame、JApplet、JButton等。,JFrame,在JFrame中不能直接调用add方法加入部件,而是要通过getContentPane获得一个容器(Container)对象,再调用这个容器对象的add 方法加入其它部件。这点是所有Swing的容器部件均有的特性 在JFrame中可以设置用户关闭窗体时在执行windowClosi

2、ng()方法后的默认处理操作。如果没有注册窗体关闭处理,也将执行默认处理操作。,默认处理操作的设置方法,void setDefaultCloseOperation(int operation)其中参数operation为一个整数,可以是以下常量:DO_NOTHING_ON_CLOSE:不做任何处理;HIDE_ON_CLOSE:为默认处理情形,自动隐藏窗体。DISPOSE_ON_CLOSE:自动隐藏和关闭窗体。EXIT_ON_CLOSE:仅用于应用程序中,关闭窗体、结束程序运行。,例13-1一个简单的演示,import java.awt.*;import javax.swing.*;import

3、.*;public class ContentDemo public static void main(String args)JFrame f=new JFrame(Demo);Container cont=f.getContentPane();cont.setLayout(new FlowLayout();for(int i=1;i=8;i+)cont.add(new JButton(Button#+i);f.setSize(300,300);f.setVisible(true);f.addWindowListener(new WindowAdapter()public void wind

4、owClosing(WindowEvent e)System.out.println(execute windowClosing););f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);,等级考试试题,/打印无符号整数位import java.awt.*;import.*;import javax.swing.*;public class Java_3 extends JFrame public Java_3()super(打印无符号整数位);Container c=getContentPane();c.setLayout(new FlowLay

5、out();c.add(new JLabel(请输入整数:);final JTextField output=new JTextField(33);JTextField input=new JTextField(10);,input.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)int val=Integer.parseInt(e.getActionCommand();output.setText(getBits(val););c.add(input);c.add(new JLab

6、el(该数的二进制位表示是);output.setEditable(false);/*Found*c.add(_);setSize(720,70);show();,private String getBits(int value)int displayMask=1 31;StringBuffer buf=new StringBuffer(35);for(int c=1;c=32;c+)buf.append(value,public static void main(String args)Java_3 app=new Java_3();app.addWindowListener(new Win

7、dowAdapter()/*Found*public void windowClosing(_ e)System.exit(0););,13.2.2 JApplet,若Applet中包含Swing构件,则必须继承JApplet类。JApplet是顶层Swing容器,包含一个根面板,根面板中包含一个内容面板,内容面板中可以加入除了菜单条之外的所有Swing构件。对JApplet进行布局管理是针对内容面板,而不是JApplet。向JApplet中添加构件,不能直接添加,而是添加到内容面板。JApplet的默认布局管理器是BorderLayout,而Applet的默认布局管理器是FlowLayout

8、。,例13-2:投掷筛子的程序。,import java.awt.*;import java.awt.event.*;import javax.swing.*;public class ClickableDice extends JApplet int value1=4;/筛子的初始点数.int value2=4;/筛子的初始点数.MyPanel dice;public void init()dice=new MyPanel();setContentPane(dice);/设置创建的面板为内容面板 JButton b=new JButton(push me);dice.setLayout(ne

9、w BorderLayout();dice.add(South,b);,b.addActionListener(new ActionListener()public void actionPerformed(ActionEvent evt)value1=(int)(Math.random()*6)+1;value2=(int)(Math.random()*6)+1;dice.repaint(););,例13-2:续1,void draw(Graphics g,int val,int x,int y)/绘制筛子上面的点 g.setColor(Color.white);g.fillRect(x,y

10、,35,35);/筛子画面清除 g.setColor(Color.black);g.drawRect(x,y,34,34);/绘制筛子边框 if(val 1)/左上角的点 g.fillOval(x+3,y+3,9,9);if(val 3)/右上角的点 g.fillOval(x+23,y+3,9,9);,例13-2:续2,if(val=6)/中间左边的点 g.fillOval(x+3,y+13,9,9);if(val%2=1)/正中央 g.fillOval(x+13,y+13,9,9);if(val=6)/中间右边的点 g.fillOval(x+23,y+13,9,9);if(val 3)/底部

11、左边的点 g.fillOval(x+3,y+23,9,9);if(val 1)/底部右边的点 g.fillOval(x+23,y+23,9,9);,例13-2:续3,class MyPanel extends JPanel public void paintComponent(Graphics g)super.paintComponent(g);/调用父类方法绘制背景 draw(g,value1,10,10);/在10,10位置绘制筛子 draw(g,value2,120,10);/在120,10位置绘制筛子,例13-2:续4,13.2.3 Swing中的按钮和标签 标签和各种按钮均允许设置图

12、标,构造方法的一种:JLabel(String str,Icon icon,int align)也可以在创建了标签对象后通过setIcon方法设置标签的图标。void setIcon(Icon icon)在所有图形部件的父类JComponent类中定义了如下方法:void setToolTipText(String text)功能:设置鼠标移到部件上时的提示文字。,例13-3 用户登录界面设计,import java.awt.*;import javax.swing.*;public class ContentDemo extends JFrame JTextField username;JP

13、asswordField password;JButton login,register;public ContentDemo()super(login frame);Container cont=getContentPane();cont.setLayout(new GridLayout(3,2);cont.add(new JLabel(username:);username=new JTextField(10);cont.add(username);cont.add(new JLabel(password:);password=new JPasswordField(10);cont.add

14、(password);,login=new JButton(new ImageIcon(enter.gif);register=new JButton(new ImageIcon(register.gif);cont.add(login);cont.add(register);setSize(200,200);setVisible(true);public static void main(String args)new ContentDemo();,JScroolPane容器,例13-4在文本域中显示拆分结果。import java.awt.*;import javax.swing.*;pu

15、blic class factorial extends JApplet public void init()String output=;JTextArea outputarea=new JTextArea(10,50);JScrollPane scroll=new JScrollPane(outputarea);Container container=getContentPane();container.add(scroll);for(long i=0;i=10;i+)output+=+i+!=+fac(i)+n;outputarea.append(output);public long

16、fac(long no)求n的阶乘.,工具栏-JTollbar,import java.awt.*;import javax.swing.*;public class ToolBarDemo extends JApplet public void init()Container cont=getContentPane();cont.setLayout(new BorderLayout();JToolBar tool=new JToolBar();Image myImage=getImage(getDocumentBase(),open.gif);JButton open=new JButton

17、(new ImageIcon(myImage);myImage=getImage(getDocumentBase(),folder.gif);JButton mail=new JButton(new ImageIcon(myImage);tool.add(open);tool.add(mail);cont.add(North,tool);JScrollPane scroll=new JScrollPane(new JTextArea();cont.add(Center,scroll);,JOptionPane对话框,JoptionPane的对话框可分为四类:ShowMessageDialog:

18、向用户显示一些消息;showInputDialog:提示用户进行输入;showConfirmDialog:向用户确认,含yes/no/cancel响应;showOptionDialog:选项对话框,该对话框是前面几种形态的综合。,对话框的外观,显示消息对话框showMessageDialog,格式:static void showMessageDialog(Component parentComponent,Object message,String title,int messageType,Icon icon)其中,参数1定义对话框的父窗体,如果该参数为null,一个运行Java程序的默认

19、窗体作为父窗体,并且在父窗体中居中显示对话框;参数2为消息内容,可以是任何存放数据的部件或数据对象本身;参数3为对话框的标题;,参数4为消息类型,内定的消息类型包括:ERROR_MESSAGE(错误消息)INFORMATION_MESSAGE(信息)WARNING_MESSAGE(警告消息)QUESTION_MESSAGE(询问消息)PLAIN_MESSAGE(一般消息);参数5为显示图标,缺少该参数时,根据消息类型有默认的显示图标。,提示输入对话框showInputDialog,格式1:static String showInputDialog(Object message)最复杂的形态涉及

20、7个参数,分别表示父窗体、消息、标题、消息类型、图标、可选值、初始值。static Object showInputDialog(Component parentComponent,Object message,String title,int messageType,Icon icon,Object selectionValues,Object initialSelectionValue),确认对话框showConfirmDialog,最简单只包含两个参数。格式:static int showConfirmDialog(Component parentComponent,Object mes

21、sage)该对话框显示时包含3个选项Yes,No and Cancel,标题默认为Select an Option。最复杂的形式有6个参数,具体格式如下:static int showConfirmDialog(Component parentComponent,Object message,String title,int optionType,int messageType,Icon icon),选项对话框showOptionDialog,格式:static int showOptionDialog(Component parentComponent,Object message,Stri

22、ng title,int optionType,int messageType,Icon icon,Object options,Object initialValue)使用举例:Object options=OK,CANCEL;JOptionPane.showOptionDialog(null,Click OK to continue,Warning,JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE,null,options,options0);显示一个警告对话框,包括 OK,CANCEL两个选项,标题为“Warning”,显示消息

23、为“Click OK to continue”。,等级考试上机题,import;public class Java_1 public static void main(String args)/变量初始化 int passes=0,/考生通过的数目 failures=0,/考生不通过的数目 student=1,/学生计数器 result;/一门考生结果 String input,/用户输入的值 output;/输出字符串,/处理10名学生,用计数器控制循环 while(student=10)input=JOptionPane.showInputDialog(输入结果(1=通过,2=不通过);/

24、*Found*result=Integer._(input);if(result=1)passes=passes+1;else failures=failures+1;student=student+1;,/结果处理 output=通过:+passes+n不通过:+failures;if(passes 8)output=output+n提高学费;/*Found*JOptionPane._(null,output,对考试结果的分析示例,JOptionPane.INFORMATION_MESSAGE);/*Found*System._(0);,等级考试试题2,import javax.swing.

25、*;public class Java_2 public static void main(String args)int frequency1=0,frequency2=0,frequency3=0,frequency4=0,frequency5=0,frequency6=0,face;/骰子旋转500次的代码 for(int roll=1;roll=500;roll+)face=1+(int)(Math.random()*6);/*Found*switch(_)case 1:+frequency1;break;,case 2:+frequency2;break;case 3:+freque

26、ncy3;break;case 4:+frequency4;break;case 5:+frequency5;break;case 6:+frequency6;break;,/*Found*JTextArea outputArea=_ JTextArea(7,10);outputArea.setText(面t频率+n1t+frequency1+n2t+frequency2+n3t+frequency3+n4t+frequency4+n5t+frequency5+n6t+frequency6);,/*Found*JOptionPane.showMessageDialog(null,_,骰子旋转5

27、00次,JOptionPane.INFORMATION_MESSAGE);/*Found*System._(0);,颜色对话框,在JColorChooser类中有一个静态方法可以弹出对话框选择颜色。具体格式如下:static Color showDialog(Component component,String title,Color initialColor)其中,参数component指出对话框依赖的组件,title为对话框的标题,initialColor指定对话框显示时的初始颜色设置。,例13-7 给围棋棋盘背景选择颜色,change=new JButton(改变背景);cont.add

28、(South,change);change.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)Color boardColor=JColorChooser.showDialog(Simplechess.this,棋盘颜色,chessboard.getBackground();chessboard.setBackground(boardColor););,选项卡-JTabbedPane,通过addTab方法可以给选项卡中添加选项,该方法有多种形态,以下为常用形式:void addTab(

29、String title,Component component)在选项卡中增加一个用标题代表的部件,无图标。void addTab(String title,Icon icon,Component component)在选项卡中增加一个部件,该选项通过标题、图标表示,其中,标题和图标可以存在,也可以某个为null。,点击选项卡的会发生状态改变事件,首先必须注册ChangeListener监听者。void addChangeListener(ChangeListener l)在监听者的类设计中必须实现ChangeListener接口,也就是要编写如下处理方法:public void state

30、Changed(ChangeEvent e)在事件处理编程中,可以利用JTabbedPane提供了getSelectedIndex()方法获取当前选中的选项卡序号,从而进一步实现其他处理,例13-7 选项卡的应用,import java.awt.*;import javax.swing.*;import.*;public class TestTabbedPane extends JFrame implements ChangeListener JTabbedPane jtp;JPanel jp=new JPanel4;/定义有4个元素的面板数组 int currentIndex=0;Color

31、 color=Color.red,Color.green,Color.blue,Color.white;String des=红色卡,绿色卡,兰色卡,白色卡;,public TestTabbedPane()Container cont=getContentPane();jtp=new JTabbedPane();for(int i=0;i4;i+)jpi=new JPanel();/创建面板对象 jpi.setBackground(colori);/设置面板的背景 jtp.addTab(desi,jpi);/将面板加入选项卡 jtp.addChangeListener(this);cont.add(jtp);/将选项卡加入窗体中 setSize(300,150);setVisible(true);,public void stateChanged(ChangeEvent e)if(e.getSource()=jtp)int i=(JTabbedPane)e.getSource().getSelectedIndex();this.setTitle(选择了+desi);/设置窗体的标题 public static void main(String args)new TestTabbedPane();,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号