高级组件GUI设计.

Slides:



Advertisements
Similar presentations
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
Advertisements

JAVA 编 程 技 术 主编 贾振华 2010年1月.
JAVA程序设计 天津工程职业技术学院计算机工程系软件技术教研室.
P2P文件共享系统 制作人:李洁顺 指导教师:杨淑萍 张 霞.
Java的程式架構與基本觀念 Java語言的歷史 Java程式的開發環境 Java程式的架構 輸出與輸入物件之使用 工具使用方法介紹
四資二甲 第三週作業 物件導向程式設計.
視窗程式設計 2. 視窗版面配置 Chih Hung Wang Reference:
6.5 图形界面的布局设计 每一个容器组件都有一个默认的布局管理方式,也可以用setLayout方法来设置其他布局管理器。一旦确定了布局管理方式,容器组件就可以用add方法加入组件。 布局管理器用来确定组件在容器中的位置和大小,AWT中定义了布局管理器接口LayoutManager的实现类来实现此功能。
第11章 Java多媒体技术.
第 18 章 圖形使用者介面.
第三部分 Java语言编程应用篇 第6章 Java语言的 图形用户界面开发技术 (之二).
第二章 JAVA语言基础.
第14章 c++中的代码重用.
在PHP和MYSQL中实现完美的中文显示
第9章 图形用户界面(GUI)设计.
Ch02 視窗Swing套件 物件導向系統實務.
Java语言程序设计-图形用户界面设计(2)
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
问题 Jdbc连接数据库 下载数据库的驱动 Sql server 在微软的网站上可以下载 Sqlserver for jdbc driver
2018/11/15 面向对象与多线程综合实验-GUI设计 教师:段鹏飞.
第十一章   Swing II.
SWING 2018/11/23.
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
程式設計實作.
視窗程式設計 10. 組合方塊與對話盒 Chih Hung Wang Reference:
記事本 物件導向系統實務.
第九章 窗口、菜单和对话框 本章的任务: 介绍图形用户界面的高级组件。这些组件包括窗口、菜单和对话框等,它们可以构造出标准GUI应用程序。最后,简要介绍Java Swing的使用方法。
記事本 物件導向系統實務.
走进编程 程序的顺序结构(二).
辅导课程六.
网络常用常用命令 课件制作人:谢希仁.
實作輔導 3 日期: 4/14(星期六) 09:10~12:00、13:10~16:00
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
AWT Event Model.
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
Ch04 事件處理 物件導向系統實務.
CH03 為自己的視窗加上小元件 物件導向系統實務.
Java程序设计 第2章 基本数据类型及操作.
P2P文件共享系统 制作人:李洁顺 指导教师:杨淑萍 张 霞.
CH04 視窗中元件排排坐 物件導向系統實務.
C/C++/Java 哪些值不是头等程序对象
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
Multithread 多執行緒 以GUI為例了解物件以及Event
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第二章Java基本程序设计.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
$9 泛型基础.
产品推广 PRODUCT PROMOTION PRESENTED BY OfficePLUS.
4.5 对话框.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
组件 复选框(Checkbox)可以让用户进行多项选择。复选框有两种状态,分别为“开(on)”和“关(off)”。当用户点中复选框的时候,复选框的状态就会改变。 1、创建复选框 (1)声明复选框。 Checkbox mycheckbox =new Checkbox (); (2)添加复选框。将复选框组件放置到容器中。
第4章 Excel电子表格制作软件 4.4 函数(一).
第二章 Java语法基础.
iSIGHT 基本培训 使用 Excel的栅栏问题
3.16 枚举算法及其程序实现 ——数组的作用.
Chapter 18 使用GRASP的对象设计示例.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
第十二章 JFC/Swing 概述  Swing组件  Swing应用程序结构  JComponent类.
第二章 Java基本语法 讲师:复凡.
Python 环境搭建 基于Anaconda和VSCode.
WSAAsyncSelect 模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
判斷(選擇性敘述) if if else else if 條件運算子.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第二章 Java基本语法 讲师:复凡.
Presentation transcript:

高级组件GUI设计

9.6 对 话 框 设 计 顾名思义,对话框(Dialog)是向用户显示信息并获取程序继续运行所需数据的窗口,可以起到与用户交互的作用。从本质上讲,对话框是一种特殊的窗体,它通过一个或多个组件与用户交互。与JFrame一样,对话框是有边框、有标题且独立存在的容器,并且不能被其他容器所包容,但是对话框不能作为程序的最外层容器,也不能包含菜单条,此外,Java的对话框上没有最大化和最小化按钮。

Java提供了JDialog与JOptionPane两类对话框组件。JOptionPane提供了许多现成的对话框样式供用户选择使用。如果JOptionPane提供的样式无法满足我们的需求时,就需要使用JDialog来自行设计。 此外,对话框可分为模态和非模态两种类型。在程序的运行过程中,模态对话框一旦出现在屏幕上,则要求用户必须对该对话框作出响应,然后关闭对话框后才能回到原来的应用程序中继续执行。而非模态对话框则无上述要求。使用JOptionPane对象所得到的对话框都是模态对话框,而使用JDialog设计的对话框则可根据实际需要进行选择。

9.6.1 JOptionPane对话框 JOptionPane提供了许多现成的对话框样式,用户只需使用该类提供的静态方法,指定方法中所需要的参数,JOptionPane对话框就能轻易的显示出来。利用JOptionPane类来制作对话框不仅简单快速,而且程序代码简洁清晰。JOptionPane类的继承关系如下: java.lang. Object java.awt.Component java.awt.Container javax.swing. JComponent javax.swing.JOptionPane

表9.12 JOptionPane的构造方法 构 造 方 法 说 明 JOptionPane( ) 说 明 JOptionPane( ) 创建一个显示测试信息的JOptionPane组件 JOptionPane(Object message) 创建一个显示特定信息的JOptionPane组件 JOptionPane(Object message,int messageType) 创建一个显示特定信息的JOptionPane组件,并设置信息类型 JOptionPane(Object message,int messageType, int optionType) 创建一个显示特定信息的JOptionPane组件,并设置信息与选项类型

表9.12 JOptionPane的构造方法 JOptionPane(Object message,int messageType, int optionType,Icon icon) 创建一个显示特定信息的JOptionPane组件,并设置信息与选项类型,且可以显示出图案 int optionType,Icon icon,Object[ ] options) 创建一个显示特定信息的JOptionPane组件,并设置信息与选项类型,且可以显示出图案。选项值是一个ObjectArray,可用作更改按钮上的文字 int optionType,Icon icon,Object[ ] options, Object initialValue) 创建一个显示特定信息的JOptionPane组件,并设置信息与选项类型,且可以显示出图案。选项值是一个ObjectArray,可用作更改按钮上的文字,并设置默认按钮

实际上,利用JOptionPane类来产生对话框,通常不用new创建JOptionPane对象,而是使用JOptionPane类所提供的一些静态方法产生对话框。根据对话框的用途,可将JOptionPane类的对话框分为4种类型,分别是只给出提示信息的Message Dialog、要求用户进行确认的Confirm Dialog、可输入数据的Input Dialog和由用户自己定义类型的Option Dialog。系统分别为这4种类型的对话框提供了足够多的静态方法,下面分别予以说明。

1.Message Dialog Message Dialog是提示信息对话框。这种对话框中通常只含有一个“确定”按钮,例如,安装完某个软件时通常会跳出一个对话框告知您安装已经成功。创建这种对话框的静态方法列于表9.13中。

表9.13 Message Dialog的静态方法 Message Dialog的静态方法 void showMessageDialog(Component parentComponent, Object message) Object message,String title,int messageType) Object message,String title,int messageType,Icon icon) void showInternalMessageDialog(Component parentComponent, Object message,String title, int messageType, Icon icon)

表9.13 Message Dialog的静态方法 参 数 说 明   parentComponent:是指产生对话框的组件类型,通常是指Frame或Dialog组件; message:是指要显示的组件,通常是String或Label类型; title:对话框标题上显示的文字; messageType:指定信息类型(图标及字符串); icon:自定义的图标

表9.3中的messageType共有5种类型,分别用下述字符常量表达:ERROR_MESSAGE, INFORMATION_MESSAGE,WARNING_MESSAGE,QUESTION_MESSAGE,PLAIN_MESSAGE。指定messageType后,对话框中就会出现相应的图标及提示字符串,使用PLAIN_MESSAGE则没有图标。

2.Confirm Dialog Confirm Dialog称为确认对话框,这类对话框通常会询问用户一个问题,要求用户作YES/NO的回答。例如,当我们修改了某个文件的内容却没存盘就要关闭此文件时,系统通常都会弹出一个确认对话框,询问我们是否要保存修改过的内容。Confirm Dialog的静态方法列于表9.14中。

表9.14 Confirm Dialog的静态方法 int showConfirmDialog(Component parentComponent,Object message) int showConfirmDialog(Component parentComponent,Object message,String title,int optionType) int showConfirmDialog(Component parentComponent,Object message,String title,int optionType,int messageType) int showConfirmDialog(Component parentComponent,Object message,String title,int optionType,int messageType,Icon icon) int showInternalConfirmDialog(Component parentComponent,Object message) int showInternalConfirmDialog(Component parentComponent,Object message,String title,int optionType) int showInternalConfirmDialog(Component parentComponent,Object message,String title,int optionType,int messageType) int showInternalConfirmDialog(Component parentComponent,Object message,String title,int optionType,int messageType,Icon icon)

确认对话框的静态方法中共有6个参数,其中parentComponent、message、title、messageType和icon等5个参数的含义与提示信息对话框(Message dialog)中的相同,新增的一个optionType参数用于指定按钮的类型,可有4种不同的选择,分别是DEFAULT_OPTION、YES_NO_OPTION、YES_NO_CANCEL_OPTION与OK_CANCEL_OPTION。 这些方法的返回值是一个整数,依用户按下的按钮而定:YES、OK=0;NO=1;CANCEL=2;CLOSED=-1(当用户直接关掉对话框时)。

3.Input Dialog Input Dialog称为输入对话框,这类对话框可以让用户输入相关的信息,当用户完成输入并按下确定按钮后,系统会得到用户所输入的信息。输入对话框不仅可以让用户自行输入数据,也可以提供ComboBox组件让用户选择相关信息,避免用户输入错误。Input Dialog的静态方法列于表9.15中。

表9.15 Input Dialog的静态方法 String showInputDialog(Object message) String showInternalInputDialog(Object message) String showInputDialog(Component parentComponent,Object message) String showInternalInputDialog(Component parentComponent,Object message) String showInputDialog(Component parentComponent,Object message,String title,int messageType String showInternalInputDialog(Component parentComponent,Object message,String title,int messageType) Object showInputDialog(Component parentComponent,Object message,String title,int messageType,Icon icon,Object[ ] selectionValues,Object initialselectionValue) Object showInternalInputDialog(Component parentComponent,Object message,String titleint messageType,Icon icon,Object[ ]selectionValues,Object initialselectionValue)

输入对话框的静态方法中共有7个参数,其中parentComponent、message、title、messageType和icon等5个参数的含义与提示信息对话框(Message Dialog)中的相同,另外两个参数中的selectionValue给用户提供了可能的选择值(数组),这个数组中的数据会以ComboBox方式显示出,而initialSelectionValue是对话框初始化时所显示的值。 当用户按下确定钮时会返回用户输入的信息,若按下取消钮则返回null。

4. Option Dialog Option Dialog称为选择对话框,这类的对话框可以让用户自已定义对话框的类型。它的最大好处是可以改变按钮上的文字,对于看不懂英文的用户,使用这种对话框则较为理想。Option Dialog的静态方法列于表9.16中。

表9.16 Option Dialog的静态方法 int showOptionDialog(Component parentComponent,Object message,String title,int optionType,int messageType,Icon icon,Object[ ] options,Object initialValue) int showInternalOptionDialog(Component parentComponent,Object message,String title,int optionType,int messageType,Icon icon,Object[ ] options,Object initialValue)

选择对话框的静态方法中共有8个参数,这些参数中的7个与输入对话框(Input Dialog)中的完全相同,新增的参数options对象数组是为用户提供设置按钮上文字的项。选择对话框返回值的类型及其具体值也与输入对话框相同。 上面我们列出了JOptionPane类所提供的4类对话框,下面通过两个例子来说明这些对话框的使用方法。

【示例程序c9_13.java】 编程实现提示信息对话框(Message Dialog)。 import java.awt.*; import javax.swing.*; import java.awt.event.*; public class c9_13 implements ActionListener { JFrame f = null; public c9_13( ) f = new JFrame("OptionPane Demo"); Container cp= f.getContentPane( ); cp.setLayout(new GridLayout(2,2)); JButton bt=new JButton("Show Error Icon"); bt.addActionListener(this);

cp.add(bt); bt=new JButton("Show Warning Icon"); bt.addActionListener(this); bt= new JButton("Show Plain Icon"); bt= new JButton("Show User Define Icon"); f.pack( ); f.setVisible(true); f.addWindowListener(new WinLis( )); }

class WinLis extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } } public static void main(String[ ] args) { new c9_13( ); } public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand( ); String title = "Message Dialog"; //设置对话框标题名 String message =""; int type = JOptionPane.PLAIN_MESSAGE; //指定信息类型 if(cmd.equals("Show Error Icon")) { type = JOptionPane.ERROR_MESSAGE; message = " Error Message"; //指定对话框内显示的信息

} else if(cmd.equals("Show Warning Icon")) { type = JOptionPane.WARNING_MESSAGE; message = " Warning Message"; } else if(cmd.equals("Show Plain Icon")) { type = JOptionPane.PLAIN_MESSAGE; message = " Plain Message"; } else if(cmd.equals("Show User Define Icon")) { message = " User Define Message"; JOptionPane.showMessageDialog(f, message, title, type, new ImageIcon("g1.gif")); //输出设置图标的信息对话框 return; } JOptionPane.showMessageDialog(f,message,title,type); //输出未设图标的信息对话框

程序运行后首先出现如图9. 17(a)所示的界面,在此界面中我们点击“Show Error Icon”按钮,则出现图9 程序运行后首先出现如图9.17(a)所示的界面,在此界面中我们点击“Show Error Icon”按钮,则出现图9.17(b)中的信息对话框,按确定后返回图9.17(a)中的界面;点击“Show Warning Icon”按钮,则出现图9.17(c)中的信息对话框;点击“Show Plain Icon”按钮,则出现图9.17(d)中的信息对话框;点击“Show User Define Icon”按钮,则出现图9.17(e)中的信息对话框。

(a) (b) (c) 图9.17 程序c9_13的运行结果

(d) (e) 图9.17 程序c9_13的运行结果

【示例程序c9_14.java】 编程实现输入对话框(Input Dialog)。 import java.awt.*; import javax.swing.*; import java.awt.event.*; public class c9_14 implements ActionListener { JFrame f=null; JLabel lb=null; public c9_14( ) { f = new JFrame("OptionPane Demo"); Container cp=f.getContentPane( ); JPanel pa=new JPanel( ); pa.setLayout(new GridLayout(2,1)); JButton bt=new JButton("Show Text Input"); bt.addActionListener(this);

pa.add(bt); bt=new JButton("Show ComboBox Input"); bt.addActionListener(this); lb= new JLabel(" ",JLabel.CENTER); cp.add(lb,BorderLayout.NORTH); cp.add(pa,BorderLayout.CENTER); f.pack( ); f.setVisible(true); f.addWindowListener(new WinLis( )); } class WinLis extends WindowAdapter {

public void windowClosing(WindowEvent e) { System.exit(0); } public static void main(String[ ] args) { new c9_14( ); } public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand( ); String title = "Input Dialog"; String message ="您最熟悉哪一种程序语言?"; int messageType = JOptionPane.QUESTION_MESSAGE; String[ ] values = {"VB","C++","JAVA","ASP","PHP"}; String result =""; if(cmd.equals("Show Text Input")) { result = JOptionPane.showInputDialog(f, message, title, messageType);

} else if(cmd.equals("Show ComboBox Input")) { result = (String)JOptionPane.showInputDialog(f, message, title, messageType,null,values,values[0]); } if (result == null) lb.setText("您取消了对话框"); else{ lb.setText("您输入:"+result);

程序运行后首先出现图9. 18(a)所示的界面,在此界面中我们点击“Show Text Input”按钮,则出现图9 程序运行后首先出现图9.18(a)所示的界面,在此界面中我们点击“Show Text Input”按钮,则出现图9.18(b)所示的输入对话框,在此对话框中我们输入“JAVA”,按“确定”按钮后将输入值返回到第一个界面上,如图9.18(c)所示;在此界面上,再点击“Show ComboBox Input”按钮,则出现图9.18(d)所示的输入对话框,在此对话框中我们点击“VB”,按“确定”按钮后又将输入值返回到第一个界面上。

(a) (b) (c) (d) 图9.18 程序c9_14的运行结果

9.6.2 JDialog对话框 如果JOptionPane提供的样式无法满足我们的需求,就需要使用JDialog来自行设计对话框。用JDialog来制作对话框时,必须制作对话框中的每一个组件,所以比较麻烦。但是,当我们想要了解对话框的更多细节时,还是有必要学习用JDialog来制作对话框的过程的。事实上,当使用JOptionPane时,系统会自动产生JDialog组件,并将JOptionPane的内容放入JDialog的ContentPane中,而不需要我们介入。

JDialog是java.awt.Dialog的子类,其继承关系如下: java.1ang.Object java.awt.Component java.awt.Container java.awt.Window java.awt.Dialog javax.swing.JDialog

表9.17 Jdialog的构造方法 方 法 说 明 JDialog( ) 建立一个空的对话框 JDialog(Dialog owner) 方 法 说 明 JDialog( ) 建立一个空的对话框 JDialog(Dialog owner) 建立一个空的、没有对话框标题、属于Dialog组件的对话框 JDialog(Dialog owner,boolean modal) 使用指定的Dialog组件创建一个无标题、模态对话框 JDialog(Dialog owner,String title) 使用指定的组件创建一个有标题、非模态对话框 JDialog(Dialog owner,String title, boolean modal) 使用指定的组件创建一个有标题、模态对话框 JDialog(Frame owner) 使用指定的Frame组件创建一个无标题、非模态对话框 JDialog(Frame owner,boolean modal) 使用指定的Frame组件创建一个无标题、模态对话框 JDialog(Frame owner,String title) 使用指定的Frame组件创建一个有标题、非模态对话框 JDialog(Frame owner,String title, 使用指定的Frame组件创建一个有标题、模态对话框

表中的modal是对话框的操作模式,可分为模态和非模态两种,用modal参数的true与false表示。当modal为true时,称为模态对话框,它要求用户在应用程序继续执行之前必须对该对话框作出响应,关闭对话框后才能回到原来的应用程序继续执行。当modal为false时,称为非模态对话框,非模态对话框则无上述要求。 使用JDialog与使用JFrame非常类似,要加入组件到JDialog上必须先取得JDialog的ContentPane,然后再把组件加到此ContentPane中。JDialog默认的版面管理器是BorderLayout,它是不可见的,可以使用show( )方法显示它。下面我们用示例程序来说明它的制作与使用方法。

【示例程序c9_15.java】 JDialog的制作与使用。 import javax.swing.*; import javax.swing.border.*; import java.awt.*; import java.awt.event.*; public class c9_15 implements ActionListener { String s1=" "; JFrame f=null; JLabel lb=new JLabel("对话框示例 "); JTextField tf1,tf2; //声明对话框中的文本框对象 JDialog dialog; //声明对话框对象 public c9_15( )

{ f=new JFrame("对话框示例"); Container cp=f.getContentPane( ); JPanel pa=new JPanel(new GridLayout(3,1)); pa.add(lb); JButton bt=new JButton("进入对话框"); bt.addActionListener(this); pa.add(bt); bt=new JButton("结束"); pa.setBorder(BorderFactory.createTitledBorder( BorderFactory.createLineBorder(Color.blue,3), "对话框示例",TitledBorder.CENTER,TitledBorder.TOP));

cp.add(pa,BorderLayout.CENTER); f.pack( ); f.setVisible(true); f.addWindowListener(new WinLis( )); } public void actionPerformed(ActionEvent e) { String cmd=e.getActionCommand( ); if (cmd.equals("进入对话框")) { dial( ); } //在该方法中创建对话框 else if (cmd.equals("结束")) { System.exit(0); } //对话框中的按钮事件 if (cmd.equals("确定")) { } else if(cmd.equals("返回")) {

s1=tf1.getText( ); s1=s1+tf2.getText( ); lb.setText(s1);dialog.dispose( ); } class WinLis extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } public static void main(String[ ] args) { new c9_15( ); } public void dial( )

dialog=new JDialog(f,"进入对话框",true); //创建对话框对象 Container diacp=dialog.getContentPane( ); //创建对话框的容器对象 diacp.setLayout(new FlowLayout( )); //设置创建对话框的容器的布局 JLabel lb1=new JLabel("输入学号: "); JLabel lb2=new JLabel("输入姓名: "); JPanel pa1=new JPanel(new GridLayout(3,2)); //面板布局为3行2列布局 tf1=new JTextField(8); tf2=new JTextField(8); pa1.add(lb1); pa1.add(tf1); pa1.add(lb2); pa1.add(tf2); JButton bt1=new JButton("确定");

pa1.add(bt1); bt1= new JButton("返回"); bt1.addActionListener(this); diacp.add(pa1); //对话框的容器上放入面板 dialog.setBounds(150,150,200,150); //设置对话框的容器的大小 dialog.show( ); //将对话框变为可见 }

在上面的示例程序中有一个JFrame窗口和一个对话框。在JFrame窗口中定义了一个标签组件(lb)、两个按钮组件(bt),如图9 在上面的示例程序中有一个JFrame窗口和一个对话框。在JFrame窗口中定义了一个标签组件(lb)、两个按钮组件(bt),如图9.19所示。在对话框中定义了2个标签(lb1,lb2),2个文本框(tf1,tf2),两个按钮组件(bt1,bt2),如图9.20所示。程序运行时首先出现图9.19所示的界面,当点击这个界面的“进入对话框”按钮后则出现图9.20所示的对话框,在这个对话框中输入学号和姓名,输入完后按“返回”按钮则出现图9.21所示的画面,它实际上是图9.19所示界面中的标签文本接受了我们在对话框中输入的信息后的再现。

图 9.19

图 9.20

图 9.21