您的位置:首页 > 产品设计 > UI/UE

swing入门教程(二) 简单的swing小部件

2016-02-05 10:26 447 查看
  ——
就像所有的“x
入门”教程一样,本教程也包含必不可少的 HelloWorld
演示。但这个示例不仅对观察 Swing 应用程序如何工作有用,还对确保设置正确很有用。一旦使这个简单的应用程序能够成功运行,那么之后的每个示例也将能够运行。


JLabel

Swing 库中最基础的组件是 JLabel。它所做的正是您所期望的:呆在那儿,看起来很漂亮,描述其他组件。下图显示了的 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



用来改变 JButton
属性的方法与 JLabel
的方法类似(您可能发现,在大多数 Swing
组件中,这些属性都类似)。它们控制文本、图片和方向:
get/setText(): 获取/设置标签的文本。
get/seticon(): 获取/设置标签的图片。
get/setHorizontalAlignment(): 获取/设置文本的水平位置。

get/setVerticalAlignment(): 获取/设置文本的垂直位置。

get/setDisplayedMnemonic(): 获取/设置访问键(下划线字符),与 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


在处理 JTextField
时,只需要关注一个方法 ——
这应当是很明显的,这个方法就是设置文本的方法:
get/setText()
,用于获取/设置
JTextField 中的文本。

JFrame

迄今为止,我介绍了 Swing
的三个基本构造块:标签、按钮和文本字段;但是现在需要个地方放它们,希望用户知道如何处理它们。JFrame类就是做这个的——它是一个容器,允许您把其他组件添加到它里面,把它们组织起来,并把它们呈现给用户。它有许多其他好处,但是我认为先看看它的图片最简单:
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
类,如下所示:

public class HelloWorld extends JFrame

这样做之后,就得到上面描述的所有 JFrame
属性,最重要的是操作系统对窗口的本机支持。下一步是把组件放在屏幕上。在这个示例中,使用了一个 null
布局。在教程的后面部分,您将学到更多关于布局和布局管理器的内容。但对于这个示例,可以用数字表示 JFrame
上的像素位置:
public HelloWorld()

{

super();

this.setSize(300, 200);

this.getContentPane().setLayout(null);

this.add(getJLabel(), null);

this.add(getJTextField(), null);

this.add(getJButton(), null);

this.setTitle("HelloWorld");

}

private javax.swing.JLabel getJLabel() {

if(jLabel == null) {

jLabel = new javax.swing.JLabel();

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

jLabel.setText("Name:");

}

return jLabel;

}

private javax.swing.JTextField getJTextField() {

if(jTextField == null) {

jTextField = new javax.swing.JTextField();

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

}

return jTextField;

}

private javax.swing.JButton getJButton() {

if(jButton == null) {

jButton = new javax.swing.JButton();

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

jButton.setText("OK");

}

return jButton;

}
现在组件都放在了 JFrame
上,并且需要在屏幕上显示 JFrame,并让应用程序可以运行。就像在所有的 Java
应用程序中一样,必须添加一个 main
方法,才能让 Swing
应用程序运行。在这个 main
方法中,只需要创建 HelloWorld
应用程序对象,然后调用其setVisible()即可:
public static void main(String[] args)

{

HelloWorld w = new HelloWorld();

w.setVisible(true);

}
完成了!这就是创建应用程序的所有过程。
完整代码如下:

package cn.edu.jnu.www;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
public class HelloWorld extends JFrame{
private JLabel jLabel;
private JTextField jTextField;
private JButton jButton;

public HelloWorld()
{
super();
this.setSize(300, 200);
this.getContentPane().setLayout(null);
this.add(getJLabel(), null);
this.add(getJTextField(), null);
this.add(getJButton(), null);
this.setTitle("HelloWorld");
}

private javax.swing.JLabel getJLabel() {
if(jLabel == null) {
jLabel = new javax.swing.JLabel();
jLabel.setBounds(34, 49, 53, 18);
jLabel.setText("Name:");
}
return jLabel;
}

private javax.swing.JTextField getJTextField() {
if(jTextField == null) {
jTextField = new javax.swing.JTextField();
jTextField.setBounds(96, 49, 160, 20);
}
return jTextField;
}

private javax.swing.JButton getJButton() {
if(jButton == null) {
jButton = new javax.swing.JButton();
jButton.setBounds(103, 110, 71, 27);
jButton.setText("OK");
}
return jButton;
}

public static void main(String[] args)
{
HelloWorld w = new HelloWorld();
w.setVisible(true);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ui java swing 界面 helloworld