JAVA用户界面设计_第1页
JAVA用户界面设计_第2页
JAVA用户界面设计_第3页
JAVA用户界面设计_第4页
JAVA用户界面设计_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JAVA用户界面设计课程目标Swing简介Swing常用的控件窗体布局事件和事件处理设计窗体swing简介Swing类Swing类是一组类,它提供比AWT标准组件更强大和更灵活的功能。除了我们已经熟悉的组件如按钮、复选框和标签外,Swing类还提供了许多新的组件,如选项卡窗格、滚动窗格、树、表格等。Swing类的层次结构

java.awt.Component

-java.awt.Container

-java.awt.Window

-java.awt.Frame-javax.swing.JFrame

-javax.Dialog-javax.swing.JDialog

-javax.swing.JWindow

-java.awt.Applet-javax.swing.JApplet

-javax.swing.Box

-javax.swing.Jcomponet

JFrame与FrameJFrame是在Swing中经常使用到的组件,大家可以把它看成是最底层的容器。这个容器里面可以装载各种Swing的控件类(例如JLabel、JButton等等),也可以装载其他的容器。至于如何摆放这些控件和容器,Swing的解决办法和AWT是一样的,都应用了一套相同的版面管理器。JFrame类继承了Frame类,所以JFrame的功能要比Frame的功能多得多。常用控件组件类名称功能JButton按钮用来进行点击触发事件,实现具体操作JLabel标签放置提示性的图片或文字JTextField文本域支持单行文本输入JTextArea文本区支持多行文本输入JRadioButton单选框支持单项选择JCheckbox复选框支持多项选择JList列表框列出所有的选项进行选择JComboBox选择框列出所有的选项进行选择,并且支持自定义选项按钮(JButton)按钮在窗体界面程序设计中是最常用的控件,Swing中提供以下的构造函数来建立一个按钮对象: JButton() 建立一个按钮JButton(Iconicon) 建立一个有图像的按钮JButton(Stringtext) 建立一个有文字标签的按钮JButton(Stringtext,Iconicon) 建立一个有图像和文字的按钮

JButton常用的方法如下: addActionListener(ActionListenerI) 在按钮上添加事件监听器 grabFocus() 请求焦点 setEnable(booleanb) 设置按钮是否可用 setVisible(booleanb) 设置按钮是否可见示例

importjava.awt.*; importjavax.swing.*; publicclassJButtonAppextendsJFrame{ Containercon=this.getContentPane(); JButtonbutton1=newJButton("按钮一"); JButtonbutton2=newJButton("按钮二"); JButtonbutton3=newJButton("按钮三"); publicJButtonApp(){ super("JButton示例"); con.setLayout(newFlowLayout()); button1.setEnabled(false); button2.setVisible(false); con.add(button1); con.add(button2); con.add(button3); this.pack(); this.show(); } publicstaticvoidmain(String[]args){ newJButtonApp(); } }标签(JLabel)这个组件主要用来放置提示性的文本或图形。以下是JLabel类的构造函数和常用方法。构造函数:

JLabel() 建立一个空白的标签组件。 JLabel(Iconimage)

建立一个含有图标的标签组件,默认排列方式为CENTER。 JLabel(Iconimage,inthorizontalAlignment)

建立一个含有图标的标签组件,并指定其排列方式。 JLabel(Stringtext)

建立一个含有文字的标签组件,默认排列方式为LEFT。 JLabel(Stringtext,inthorizontalAlignment)

建立一个含有文字的标签组件,并指定其排列方式。 JLabel(Stringtext,Iconicon,inthorizontalAlignment)

建立一个含有文字和图标的标签组件,并指定其排列方式。Jlabel的常用方法setHorizontalAlignment(intalignment)

设置标签内文字或图像的水平位置。setHorizontalTextPosition(inttextPosition)

设置标签内文字相对于图像的水平位置。setIcon(Iconicon)

设置标签内的图像。setIconTextGap(inticonTextGap)

设置标签内文字与图像的间距。setText(Stringtext)

设置标签内的文字。setVerticalAlignment(intalignment)

设置标签内文字或图像的垂直位置。setVerticalTextPosition(inttextPosition)

设置标签内文字相对于图像的垂直位置。示例 importjava.awt.*; importjavax.swing.*; publicclassJLabelAppextendsJFrame{ Containercon=this.getContentPane(); JLabellabel1=newJLabel("第一个标签"); JLabellabel2=newJLabel("第二个标签"); JLabellabel3=newJLabel("第三个标签");

publicJLabelApp(){ super("JLabel示例");

con.setLayout(newGridLayout(1,3));

label1.setHorizontalAlignment(JLabel.RIGHT);

label2.setVerticalAlignment(JLabel.BOTTOM);

con.add(label1);

con.add(label2);

con.add(label3);

this.setSize(300,200);

this.show();

}

publicstaticvoidmain(String[]args){

newJLabelApp();

}

}文本域(JTextField)JTextField是一种单行文本输入组件。构造函数:JTextField()

建立一个文本域。JTextField(Documentdoc,Stringtext,intcolumns)

使用指定的文件存储模式建立一个文本域,并且设置其 初始字符串和字段长度。JTextField(intcolumns)

建立一个文本域,并设置其初始字段长度。JTextField(Stringtext)

建立一个文本域,并设置其初始字符串。JTextField(Stringtext,intcolumns)

建立一个文本域,并设置其初始字符串和字段长度。JTextField的常用方法setColumns(intcolumns) 设置文本域的字段长度setEditable(booleanb) 设置文本域是否可编辑setFont(Fontfont) 设置文本域内文本字体setText(Stringtext) 设置文本域的字符串JTextField示例

importjava.awt.*; importjavax.swing.*; publicclassJTextFieldAppextendsJFrame{ Containercon=this.getContentPane(); JTextFieldtextField1=newJTextField(); JTextFieldtextField2=newJTextField("第二个文本框"); JTextFieldtextField3=newJTextField("第三个文本框",10); publicJTextFieldApp(){ super("JTextField示例"); con.setLayout(newFlowLayout()); textField1.setColumns(10); textField2.setEditable(false); con.add(textField1); con.add(textField2); con.add(textField3); this.pack(); this.show(); } publicstaticvoidmain(String[]args){ newJTextFieldApp(); } }选择框(JComboBox)JComboBox组件一般被称为下拉式列表框,它可以让用户浏览一系列的选项并选出或自己输入想要的值。JComboBox的构造方法和常用的使用方法如下:构造方法:

JComboBox()

建立一个新的JComboBox组件 JComboBox(ComboBoxModelaModel)

利用ComboBoxModel建立一个新的JComboBox组件 JComboBox(Object[]items)

利用Array数组对象建立一个新的JComboBox组件 JComboBox(Vectoritems)

利用Vector矢量集对象建立一个新的JComboBox组件JComboBox常用的方法:

voidaddItem(Objectobj)

将对象obj添加到下拉列表框显示的项目中。intgetItemCount()

返回下拉列表框的项目的总数。ObjectgetSelectedItem()

返回当前选中的项目。voidremoveAllItems()

移除下拉列表框中所有的项目。voidremoveItemAt(intindex)

移除项目索引值为index的项目。voidsetEditable(booleanb)

设置下拉列表框是否可编辑。voidsetSelectedIndex(intindex)

设置索引值为index的项目的状态为已选中。示例

importjava.awt.*; importjavax.swing.*; publicclassJComboBoxAppextendsJFrame{ JComboBoxyearBox1=newJComboBox(); JComboBoxyearBox2=newJComboBox(); JComboBoxmonthBox1=newJComboBox(); JComboBoxmonthBox2=newJComboBox(); JPanelpanel=newJPanel(); JLabelstartDate=newJLabel("开始日期"); JLabelendDate=newJLabel("终止日期");

publicJComboBoxApp(){ super("JComboBox示例"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); panel.add(startDate); for(inti=2000;i<=2008;i++) yearBox1.addItem(i+""); for(inti=1;i<31;i++) monthBox1.addItem(i+""); panel.add(yearBox1); panel.add(monthBox1); panel.add(endDate); for(inti=2000;i<=2008;i++) yearBox2.addItem(i+""); for(inti=1;i<31;i++) monthBox2.addItem(i+""); panel.add(yearBox2); panel.add(monthBox2); this.setSize(180,110); this.setContentPane(panel); this.show(); } publicstaticvoidmain(Stringargs[]){ newJComboBoxApp(); } }小结1.JTextField创建及常用方法2.JLabel创建及常用方法3.JComboBox创建及常用方法4.什么是容器窗体布局为什么要使用布局管理不同的平台对图形界面的管理也是不尽相同的,所以如果我们采用绝对定位的方法管理JAVA图形界面的布局,那么当程序运行在不同的设备上的时候(比如分辨率变化了、现实设备不同了),窗体外观就会变形。最长常见的变形是:窗口超出了屏幕边缘,跑到外边了;控件位置乱了,甚至相互重叠在一起;窗口特别小,看不清(往往是分辨率极高的情况下)等超出显示区域无法满屏显示三种常用的布局FlowLayout布局GridLayout布局BorderLayout布局流水布局网格布局边框布局布局FlowLayout布局FlowLayout布局是一个相当简单的排列方法,形如其名FlowLayout就如同流水一般,将加入其中的组件一个接着一个从左往右依次排列下去构造方法:FlowLayout()

建立一个新的FlowLayout,此FlowLayout默认为居中对齐,而且组件彼此之间有5单位的水平与垂直间距。FlowLayout(intalign)

建立一个新的FlowLayout,此FlowLayout可设置排列方式,而且组件彼此之间有5单位的水平与垂直间距。FlowLayout(intalign,inthgap,intvgap)

建立一个新的FlowLayout,此FlowLayout可设置排列方式与组件间距。FlowLayout类的后两个构造方法均有参数,其中参数align可以设定FlowLayout布局中的组件靠什么方向排列。FlowLayout共有五种排列方式CENTER(默认值)LEFTRIGHTLEADINGTRAILING示例

importjava.awt.*; publicclassFlowLayoutAppextendsFrame{ ButtonbuttonLeft=newButton("左按钮"); ButtonbuttonCenter=newButton("中间按钮"); ButtonbuttonRight=newButton("右按钮"); publicFlowLayoutApp(){ super("FlowLayout示例"); this.setLayout(newFlowLayout()); this.add(buttonLeft); this.add(buttonCenter); this.add(buttonRight); this.setSize(200,120); this.show(); } publicstaticvoidmain(Stringargs[]){ newFlowLayoutApp(); } }GridLayout布局GridLayout比FlowLayout多了行和列的设置,也就是说你要先设置GridLayout共有几行几列,就如同一个二维平面一般,然后添加GridLayout布局中的组件会填充第一行的格子,然后再从第二行开始填。依此类推,就像是填充一个个格子一般,而且GridLayout布局管理器会将填进去的组件设置为一样大。构造方法:

GridLayout() 建立一个新的GridLayout布局,默认值为一行一列 GridLayout(introws,intcols)建立一个指定了几行几列的GridLayout布局 GridLayout(introws,intcols,inthgap,intvgap) 建立一个指定了几行几列GridLayout 布局,并设置组件的垂直和水平间距示例

importjava.awt.*; publicclassGridLayoutAppextendsFrame{ Buttonbutton11=newButton("第一行第一列"); Buttonbutton12=newButton("第一行第二列"); Buttonbutton21=newButton("第二行第一列"); Buttonbutton22=newButton("第二行第二列"); publicGridLayoutApp(){ super("GridLayout示例"); this.setLayout(newGridLayout(2,2)); this.add(button11); this.add(button12); this.add(button21); this.add(button22); setSize(180,160); show(); } publicstaticvoidmain(Stringargs[]){ newGridLayoutApp(); } }BorderLayout布局BorderLayout将版面划分成东、西、南、北、中五个区域,大家可以将组件放在这五个区域中的某个区域里。要使用BorderLayout,只要在容器中设置使用BorderLayout这种版面管理即可。构造方法:

BorderLayout()建立一个组件间没有间距的BorderLayout布局

BorderLayout(inthgap,intvgap)建立一个组件间有间距的BorderLayout布局。示例

importjava.awt.*; publicclassBorderLayoutAppextendsFrame{ ButtonbuttonNorth=newButton("北边"); ButtonbuttonWest=newButton("西边"); ButtonbuttonSouth=newButton("南边"); ButtonbuttonEast=newButton("东边"); ButtonbuttonCenter=newButton("中间"); publicBorderLayoutApp(){ super("BorderLayout示例"); this.setLayout(newBorderLayout()); this.add(buttonNorth,BorderLayout.NORTH); this.add(buttonWest,BorderLayout.WEST); this.add(buttonSouth,BorderLayout.SOUTH); this.add(buttonEast,BorderLayout.EAST); this.add(buttonCenter,BorderLayout.CENTER); setSize(180,160); show(); } publicstaticvoidmain(Stringargs[]) { newBorderLayoutApp(); }其它布局方式另外还有两种布局CardLayout布局和GridBagLayout布局。

CardLayout布局的功能就如同你将很多张卡片叠在一起,你一次只能看到其中一张卡片,但是你可以任意抽出其中一张卡片来看。

GridBagLayout布局是使用网格单元,指定组件的相对布置,即在一个网格的单元中指定它们的位置,每个组件的网格单元的大小可以不同,每个网格的每一行可以有不同的列数。对话框在Windows平台下用MessageBox来实现和用户的交互功能,在JAVA中也有同样的类来实现这样的功能,利用Swing中提供的JOptionPane类。四个标准对话框如下:MessageDialog(消息对话框) 用来显示信息给用户。ConfirmDialog(确认对话框) 提出问题,然后由用户自己来 确认(按"Yes"或"No"按钮)InputDialog(输入对话框) 提示输入文本。OptionDialog(选项对话框) 组合其它三个对话框类型。消息对话框消息对话框是一个简单的显示消息的窗口,只是给用户提供提示信息。如图所示消息对话框:消息对话框可以通过调用JOptionPane类的showMessageDialog(Compont,Object)方法来创建,参数是父组件和字符串(或者组件、显示的图标)。如以下语句创建一个显示简单字符的消息对话框:

JOptionPane.showMessagDialog(null,”WelcomeToQinghuaIT…”);还可以使用showMessageDialog(Component,Object,String,int)方法来创建一个显示警告消息的对话框,可以自己设置想要显示的消息对话框的标题。用法同showInputDialog()方法,参数相同但无返回值。如以下语句创建一个消息输入对话框:

JOptionPane.showMessagDialog(null,”文件被删除”,”删除警告”,JOptionPane.WARNING_MESSAGE);确认对话框创建确认对话框的最简单方法就是调用showConfirmDialog(Component,Object)方法,参数意义同消息对话框中的参数相同。 不同的是该方法返回一个整数,JOptionPane的三个属性:YES_OPTIONNO_OPTIONCANCEL_OPTION示例

importjava.awt.*; importjavax.swing.*; importjava.awt.event.*; importjava.util.EventListener; publicclassMessageDialogAppextendsJFrameimplementsActionListener{ JButtonbutton1=newJButton("显示消息对话框一");

JButtonbutton2=newJButton("显示消息对话框二");

publicMessageDialogApp(){

super("MessageDialog示例");

this.setLayout(newFlowLayout());

button1.addActionListener(this);

button2.addActionListener(this);

this.add(button1);

this.add(button2);

this.setSize(180,160);

this.show();

}

publicstaticvoidmain(Stringargs[]){

newMessageDialogApp();

}

publicvoidactionPerformed(ActionEvente){

if(e.getSource()==button1){

JOptionPane.showMessageDialog(null,"WelcomeToQinghuaIT...");

}

if(e.getSource()==button2){

JOptionPane.showMessageDialog(null,"出现错误",

"错误警告",JOptionPane.WARNING_MESSAGE);

}

}

}输入对话框输入对话框提出一个问题,并使用文本域来存储响应。创建输入对话框的最简单方法就是调用showInoutDialog(ComponertObject)方法,参数和消息对话框中的参数相同。调用输入对话框方法返回一个表示用户响应的字符串。如以下语句创建了一个简单的输入对话框:

StringinputText=IOptionPane.showInputDialog(null,“请输入你的姓名:”);示例

importjava.awt.*; importjavax.swing.*; importjava.awt.event.*; importjava.awt.event.ActionListener; importjava.util.EventListener; publicclassInputDialogAppextendsJFrameimplementsActionListener{ JButtonbutton1=newJButton("输入你的姓名"); JLabellabel=newJLabel("你的姓名是:"); publicInputDialogApp(){ super("InputDialog示例"); this.setLayout(newFlowLayout()); button1.addActionListener(this); this.add(button1); this.add(label); this.setSize(200,120); this.show(); } publicstaticvoidmain(Stringargs[]){ newInputDialogApp(); } publicvoidactionPerformed(ActionEvente){ if(e.getSource()==button1){ StringinputText=JOptionPane.showInputDialog(this,"你的姓名是:"); this.label.setText("你的姓名是:"+inputText); } } }小结1.对话框的种类(消息、警告、确认、输入对话框) 2.如何打开各种对话框事件用户对程序进行控制的过程,实际上是通过激发系统的一些事件而通知程序的程序根据事件不同,进行不同的处理,比如:键盘输入鼠标点击手写输入U盘插入常用事件对于java开发来说,能够接受事件信息并处理的类主要是AWT和后续讲解的swing图形界面类中绝大多数界面设计元素都支持事件处理,而常用的是:鼠标和键盘操作当程序收到用户的操作,则执行相应事件代码,并进行必要处理发生事件AWT中的事件JAVA事件的处理机制大家可能已经注意到了上面的程序中,按下按钮后不会触发任何事件。如果想在按下按钮时,实现一定的功能,就必须进入程序内部,编写用于决定要发生什么事情的代码。在这里就用到了JAVA的事件处理机制。在事件的处理过程中,主要涉及三个对象:Event-事件EventSource-事件源Eventhandler-事件处理者用户对界面操作在JAVA语言上的描述,以类的形式出现,例如键盘操作对应的事件类是KeyEvent事件发生的场所,通常就是各个组件,例如按钮Button接收事件并对其进行处理的对象事件按钮事件importjava.awt.*; importjava.awt.event.ActionEvent; importjava.awt.event.ActionListener; publicclassButtonEventAppextendsJFrame{

JButtonmyButton=newJButton("测试按钮"); publicButtonEventApp(){ super

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论