java界面完整教程Word格式.docx

上传人:b****3 文档编号:17232776 上传时间:2022-11-29 格式:DOCX 页数:22 大小:36.82KB
下载 相关 举报
java界面完整教程Word格式.docx_第1页
第1页 / 共22页
java界面完整教程Word格式.docx_第2页
第2页 / 共22页
java界面完整教程Word格式.docx_第3页
第3页 / 共22页
java界面完整教程Word格式.docx_第4页
第4页 / 共22页
java界面完整教程Word格式.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

java界面完整教程Word格式.docx

《java界面完整教程Word格式.docx》由会员分享,可在线阅读,更多相关《java界面完整教程Word格式.docx(22页珍藏版)》请在冰豆网上搜索。

java界面完整教程Word格式.docx

MVC让负责显示的代码、处理数据的代码、对交互进行响应并驱动变化的代码彼此分离。

有点迷惑?

如果我为这个设计模式提供一个现实世界的非技术性示例,它就比较容易了。

请想像一次时装秀。

把秀场当成UI,假设服装就是数据,是展示给用户的计算机信息。

现在,假设这次时装秀中只有一个人。

这个人设计服装、修改服装、同时还在T台上展示这些服装。

这看起来可不是一个构造良好的或有效率的设计。

现在,假设同样的时装秀采用MVC设计模式。

这次不是一个人做每件事,而是将角色分开。

时装模特(不要与MVC缩写中的模型混淆)展示服装。

他们扮演的角色是视图。

他们知道展示服装(数据的)适当方法,但是根本不知道如何创建或设计服装。

另一方面,时装设计师充当控制器。

时装设计师对于如何在T台上走秀没有概念,但他能创建和操纵服装。

时装模特和设计师都能独立地处理服装,但都有自己的专业领域。

这就是MVC设计模式背后的概念:

让UI的每个方面处理它擅长的工作。

如果您仍然不明白,那么教程后面的示例有望消除您的迷惑——但是在您继续进行的时候,请记住基本的原则:

用可视组件显示数据,同时让其他类操纵数据。

JComponent

Swing的整个可视组件库的基础构造块是JComponent。

它是所有组件的父类。

它是一个抽象类,所以不能创建JComponent,但是作为类层次结构的结果,从字面意义来说它包含了数百个函数,Swing中的每个组件都可以使用这些函数。

显然,有些概念要比其他概念重要,所以对于本教程,需要学习的重要的东西是:

∙JComponent不仅是Swing组件的基类,还是定制组件的基类(有关的更多信息在“中级Swing”教程中)。

∙它为所有组件提供了绘制的基础架构——一些方便进行组件定制的东西(同样,在“中级Swing”中,有关于这个主题的更多信息)。

∙它知道如何处理所有的键盘按键。

所以类只需要侦听特定的键。

∙它包含add()方法,可以添加其他JComponent。

换种方式来看,可以把任意Swing组件添加到其他任何Swing组件,从而构造嵌套组件(例如,JPanel包含JButton,甚至包含一些古怪的组合,例如JMenu包含JButton)。

简单的swing小部件

JLabel

Swing库中最基础的组件是JLabel。

它所做的正是您所期望的:

呆在那儿,看起来很漂亮,描述其他组件。

下图显示了的JLabel实际应用:

不太吸引人,但是仍然有用。

实际上,在整个应用程序中,不仅把JLabel用作文本描述,还将它用作图片描述。

每当在Swing应用程序中看到图片的时候,它就有可能是JLabel。

JLabel对于Swing初学者来说没有许多意料之外的方法。

基本的方法包括设置文本、图片、对齐以及标签描述的其他组件:

∙get/setText():

获取/设置标签的文本。

∙get/seticon():

获取/设置标签的图片。

∙get/setHorizontalAlignment():

获取/设置文本的水平位置。

∙get/setVerticalAlignment():

获取/设置文本的垂直位置。

∙get/setDisplayedMnemonic():

获取/设置标签的访问键(下划线文字)。

∙get/setLableFor():

获取/设置这个标签附着的组件,所以当用户按下Alt+访问键时,焦点转移到指定的组件。

JButton

Swing中的基本动作组件JButton,是与每个窗口中都能看到的OK和Cancel一样的按钮;

这些按钮所做的正是您希望它们做的工作——在单击它们之后,将发生一些事情。

到底会发生什么呢?

您必须定义发生的内容(请参阅事件,以获得更多信息)。

一个JButton实例看起来如下所示:

用来改变JButton属性的方法与JLabel的方法类似(您可能发现,在大多数Swing组件中,这些属性都类似)。

它们控制文本、图片和方向:

获取/设置访问键(下划线字符),与Alt按钮组合时,造成按钮单击。

除了这些方法,我还要介绍JButton包含的另外一组方法。

这些方法利用了按钮的所有不同状态。

状态是对组件进行描述的一个属性,通常采用真/假设置。

在JButton中,可以包含以下可能状态:

活动/不活动、选中/没选中、鼠标经过/鼠标离开、按下/没按下,等等。

另外,可以组合这些状态,例如按钮可以在鼠标经过的同时被选中。

现在您可能会问自己用这些状态到底要做什么。

作为示例,请看看您的浏览器上的后退按钮。

请注意在鼠标经过它的时候,图片是如何变化的,在按下该按钮时,图片又是如何变化的。

这个按钮利用了不同的状态。

每个状态采用不同的图片,这是提示用户交互正在进行的一种普遍并且有效的方式。

JButton上的状态方法是:

∙get/setDisabledIcon()

∙get/setDisableSelectedIcon()

∙get/setIcon()

∙get/setPressedIcon()

∙get/setRolloverIcon()

∙get/setRolloverSelectedIcon()

∙get/setSelectedIcon()

JTextField

Swing中的基本文本组件是JTextField,它允许用户在UI中输入文本。

我肯定您熟悉文本字段:

要掌握本教程,则必须使用一个文本字段输入用户名和口令。

您输入文本、删除文本、选中文本、把文字四处移动——Swing替您负责所有这些工作。

作为UI开发人员,利用JJTextField时,实际上并不需要做什么。

在任何情况下,这是JTextField实际使用时看起来的样子:

在处理JTextField时,只需要关注一个方法——这应当是很明显的,这个方法就是设置文本的方法:

get/setText(),用于获取/设置JTextField中的文本。

JFrame

迄今为止,我介绍了Swing的三个基本构造块:

标签、按钮和文本字段;

但是现在需要个地方放它们,希望用户知道如何处理它们。

JFrame类就是做这个的——它是一个容器,允许您把其他组件添加到它里面,把它们组织起来,并把它们呈现给用户。

它有许多其他好处,但是我认为先看看它的图片最简单:

JFrame实际上不仅仅让您把组件放入其中并呈现给用户。

比起它表面上的简单性,它实际上是Swing包中最复杂的组件。

为了最大程度地简化组件,在独立于操作系统的Swing组件与实际运行这些组件的操作系统之间,JFrame起着桥梁的作用。

JFrame在本机操作系统中是以窗口的形式注册的,这么做之后,就可以得到许多熟悉的操作系统窗口的特性:

最小化/最大化、改变大小、移动。

但是对于本教程的目标来说,把JFrame当作放置组件的调色板就足够了。

可以在JFrame上调用的一些修改属性的方法是:

∙get/setTitle():

获取/设置帧的标题。

∙get/setState():

获取/设置帧的最小化、最大化等状态。

∙is/setVisible():

获取/设置帧的可视状态,换句话说,是否在屏幕上显示。

∙get/setLocation():

获取/设置帧在屏幕上应当出现的位置。

∙get/setsize():

获取/设置帧的大小。

∙add():

将组件添加到帧中。

简单应用程序

就像所有的“x入门”教程一样,本教程也包含必不可少的HelloWorld演示。

但这个示例不仅对观察Swing应用程序如何工作有用,还对确保设置正确很有用。

一旦使这个简单的应用程序能够成功运行,那么之后的每个示例也将能够运行。

下图显示了完成后的示例:

HelloWorld示例

第一步是创建类。

将组件放在JFrame上的Swing应用程序需要继承JFrame类,如下所示:

publicclassHelloWorldextendsJFrame

这样做之后,就得到上面描述的所有JFrame属性,最重要的是操作系统对窗口的本机支持。

下一步是把组件放在屏幕上。

在这个示例中,使用了一个null布局。

在教程的后面部分,您将学到更多关于布局和布局管理器的内容。

但对于这个示例,可以用数字表示JFrame上的像素位置:

 

publicHelloWorld()

{

super();

this.setSize(300,200);

this.getContentPane().setLayout(null);

this.add(getJLabel(),null);

this.add(getJTextField(),null);

this.add(getJButton(),null);

this.setTitle("

HelloWorld"

);

}

privatejavax.swing.JLabelgetJLabel(){

if(jLabel==null){

jLabel=newjavax.swing.JLabel();

jLabel.setBounds(34,49,53,18);

jLabel.setText("

Name:

"

returnjLabel;

privatejavax.swing.JTextFieldgetJTextField(){

if(jTextField==null){

jTextField=newjavax.swing.JTextField();

jTextField.setBounds(96,49,160,20);

returnjTextField;

privatejavax.swing.JButtongetJButton(){

if(jButton==null){

jButton=newjavax.swing.JButton();

jButton.setBounds(103,110,71,27);

jButton.setText("

OK"

returnjButton;

现在组件都放在了JFrame上,并且需要在屏幕上显示JFrame,并让应用程序可以运行。

就像在所有的Java应用程序中一样,必须添加一个main方法,才能让Swing应用程序运行。

在这个main方法中,只需要创建HelloWorld应用程序对象,然后调用其setVisible()即可:

publicstaticvoidmain(String[]args)

HelloWorldw=newHelloWorld();

w.setVisible(true);

完成了!

这就是创建应用程序的所有过程。

完整代码如下:

packagecn.edu.jnu.www;

importjavax.swing.*;

importjavax.swing.event.*;

importjava.awt.*;

importjava.awt.event.*;

publicclassHelloWorldextendsJFrame{

privateJLabeljLabel;

privateJTextFieldjTextField;

privateJButtonjButton;

publicHelloWorld()

{

this.getContentPane().setLayout(null);

}

privatejavax.swing.JLabelgetJLabel(){

if(jLabel==null){

}

privatejavax.swing.JTextFieldgetJTextField(){

if(jTextField==null){

privatejavax.swing.JButtongetJButton(){

if(jButton==null){

jButton.setBounds(103,110,71,27);

publicstaticvoidmain(String[]args)

附加的swing小部件(上)

JComboBox

在这一节中,我将介绍Swing库中的其他全部组件、如何使用它们、它们看起来是什么样的,等等,这部分内容应当让您更好地了解Swing为UI开发人员提供了什么。

我们从JComboBox开始介绍。

组合框与下拉选择相似,区别在于使用组合框时用户可以不从列表中选择项目,还可以选择一个(而且只有一个)项目。

在某些版本的组合框中,还可以输入自己的选择。

浏览器的地址栏就是一个示例:

它是一个允许输入自己选项的组合框。

以下是JComboBox在Swing中看起来的样子:

JComboBox的重要函数包括JComboBox包含的数据。

需要有一种方法来设置JComboBox中的数据、修改数据、在用户选择时得到用户的选择。

可以使用以下JComboBox方法:

∙addItem():

添加一个项目到JComboBox.

∙get/setSelectedIndex():

获取/设置JComboBox中选中项目的索引。

∙get/setSelectedItem():

获取/设置选中的对象。

∙removeAllItems():

从JComboBox删除所有对象。

∙remoteItem():

从JComboBox删除特定对象。

JTextField的一个细微变化是JPasswordField,它允许您隐藏在文本字段区域中显示的字符。

毕竟,在您输入口令的时候,如果每个人都能看到,那可没什么好处?

可能根本就不好,而且在私人数据如此脆弱的今天,您需要所有能够得到的帮助。

以下是JPasswordField在Swing中看起来的样子:

JPasswordField

JPasswordField上额外的“安全性”方法对JTextField的行为做了轻微改变,所以不能阅读文本:

∙get/setEchoChar():

获取/设置每次字符输入时在JPasswordField中显示的字符。

在获取口令时,不会返回“回声”,而是返回实际的字符。

∙getText():

不应当使用这个函数,因为它会带来可能的安全问题(String会保存在内存中,可能的堆栈转储会暴露口令)。

∙getPassword():

这是从JPasswordField中获得口令的恰当方法,因为它返回一个包含口令的char[]。

为了保证恰当的安全性,数组应当被清为0,以确保它不会保留在内存中。

JCheckBox/JRadioButton

JCheckBox和JRadioButton组件向用户呈现选项,通常采用多选的格式。

区别是什么?

从实践的角度来说,它们没有那么不同。

它们的行为方式相同。

但是,在一般的UI实践中,它们有细微差异:

JRadioButton通常组合在一起,向用户呈现带有必选答案的问题,而且这些答案具有强制性(这意味着问题只能有一个答案)。

JRadioButton的行为保证了这个用法。

一旦选择了JRadioButton,就不能取消对它的选择,除非选择了在同一组中的另外一个单选钮。

从效果上看,这就保证了选项的惟一和必选。

JCheckBox的不同在于,允许随机地选择/取消除选择,并允许为问题选择多个答案。

这里是个示例。

问题“您是男孩还是女孩!

”有两个惟一答案选项“男孩”或“女孩”。

用户必须选择一个,不能同时选中。

另一方面,问题“您的习惯是什么?

”的答案有“跑步”、“睡觉”或“阅读”,不应当只允许为此问题选择一个答案,因为人们可能有不止一个习惯。

把这些JCheckBoxe或JRadioButton捆绑成一组的类是ButtonGroup类。

它允许把选项组织在一起(例如“男孩”和“女孩”),这样,其中一个被选择时,另外一个就自动取消选择。

以下是JCheckBox和JRadioButton在Swing中看起来的样子:

JCheckBox和JRadioButton

需要记住的重要的ButtonGroup方法是:

∙add():

添加JCheckBox或JRadioButton到ButtonGroup。

∙getElements():

获得ButtonGroup中的全部组件,允许对它们进行迭代,找到其中选中的那个。

JMenu/JMenuItem/JMenuBar

JMenu、JMenuItem和JMenuBar组件是在JFrame中开发菜单系统的主要构造块。

任何菜单系统的基础都是JMenuBar。

它平淡而乏味,但却是必需的,因为每个JMenu和JMenuItem都要用它构建。

要用setJMenuBar()方法把JMenuBar附着到JFrame。

一旦将它附加到JFrame中,就可以添加所有想要的菜单、子菜单和菜单项。

JMenu/JMenuItem的区别看起来可能很明显,但实际上,在幕后看起来并不像表面那样。

看看类的类层次结构,就知道JMenu是JMenuItem的子类。

但是,在表面上,它们是有区别的:

用JMenu包含其他JMenuItem和JMenu;

JMenuItem在选中时触发操作。

JMenuItem也支持快捷键的概念。

与您用过的大多数应用程序一样,Swing应用程序允许您按下Ctrl+(某个键)来触发一个操作,就像选中菜单键本身一样。

想想用来剪切和粘贴的快捷键Ctrl+X和Ctrl+V。

除此之外,JMenu和JMenuItem都支持访问键。

用Alt键与某个字母关联,模拟菜单本身的选择(例如,在Windows中按下Alt+F,然后按下Alt+x就可以关闭应用程序)。

以下是包含JMenu和JMenuItem的JMenuBar在Swing中的样子:

JMenuBar、JMenu和JMenuItem

这些类需要的重要方法是:

∙JMenuItemandJMenu:

oget/setAccelerator():

获取/设置用作快捷键的Ctrl+键。

oget/setText():

获取/设置菜单的文本。

oget/setIcon():

获取/设置菜单使用的图片。

∙JMenu专用:

oadd():

添加另外一个JMenu或JMenuItem到JMenu(创建嵌套菜单)。

JSlider

在应用程序中JSlider支持数值变化。

它是一种迅速而简单的方式,不仅能让用户以可视形式获得他们当前选择的反馈,还能得到可以接受的值的范围。

想像一下这种情况:

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1