Java 2 SDK,1.4 beta 的最新发行版向 JFC/Swing

组件集添加了两个强大的新组件。其中一个是

JSpinner

,它使用户能够方便地选择日期、数字或拾取列表中的选项。(另一个是

JFormattedTextField

,用于支持格式化的输入。)

JSpinner

使您可创建一个排序的值列表,该表在选择框中每次显示一个选项,如图 1

所示。用户通过点击上移和下移箭头进行选择。

用户使用组件或键盘上的上移和下移箭头进行选择。他们也可输入自己的选择。然而,与

JComboBox

不同,

JSpinner

不提供下拉列表选择,所以各个选择以及它们的顺序应有一定的意义。

要使用类,可简单地创建一个供选择的元素集合(在

List

或数组中),从列表中创建一个

SpinnerModel

,并为模型创建一个

JSpinner

String[] months = new DateFormatSymbols().getMonths();

SpinnerModel model = new SpinnerListModel(months);

JSpinner spinner = new JSpinner(model);

执行取决于用于输入值的编辑器。此编辑器必须是一个

JComponent

;系统定义的编辑器子类

JSpinner.DefaultEditor

。其中一个可用于每个模型:

JSpinner

组件象其它 Swing

组件一样工作。如果您有兴趣查出用户更改选择的时间,请连一个侦听器。对于

JSpinner

,侦听器是一个

ChangeListener

,您可直接将其连到

JSpinner

或其

SpinnerModel

上。虽然您可将侦听器连到两者中的任意一个,当值发生更改时,

ChangeEvent

的源总是

SpinnerModel

ChangeListener listener = new ChangeListener() {

public void stateChanged(ChangeEvent e) {

SpinnerModel source = (SpinnerModel)e.getSource();

System.out.println("The value is: " + source.getValue());

}

};

model.addChangeListener(listener);

让我们来看一下使用全部三种不同的 spinner 模型的示例(清单

3)。列表模型使用从

DateFormatSymbols

类取出的月份名称集。日期模型示例更改编辑器的输入格式。(beta

发行版中好象存在一处错误,当编辑器更改时不重新格式化字段。)当使用该字段旁边的箭头时,每次也可将日期移动一周。数字模型示例让用户选取从

0 到 100 之间的一个数字,当使用箭头时每次跳 5

个数。请注意:用户可输入任意数字,而并不仅限于 5 的倍数。

对于所有组件来说,当每个 spinner

值确实发生更改时,所连的侦听器将显示同一改变。如果使用光标键更改月、日或年,您会注意到直到按下回车键这些值才发生更改。

import javax.swing.*;

import javax.swing.event.*;

import java.text.*;

import java.awt.*;

import java.util.*;

public class Spinner {

public static void main (String args[]) throws Exception {

JFrame frame = new JFrame("Spinner");

frame.setDefaultCloseOperation(3);

String[] months = new DateFormatSymbols().getMonths();

SpinnerModel model = new SpinnerListModel(months);

JSpinner spinner = new JSpinner(model);

frame.getContentPane().add(spinner, BorderLayout.NORTH);

SpinnerDateModel model2 = new SpinnerDateModel();

model2.setCalendarField(Calendar.WEEK_OF_MONTH);

JSpinner spinner2 = new JSpinner(model2);

JSpinner.DateEditor editor2 = new JSpinner.DateEditor(

spinner2, "MMMMM dd, yyyy");

spinner2.setEditor(editor2);

frame.getContentPane().add(spinner2, BorderLayout.SOUTH);

SpinnerNumberModel model3 = new SpinnerNumberModel(50, 0, 100, 5);

JSpinner spinner3 = new JSpinner(model3);

frame.getContentPane().add(spinner3, BorderLayout.CENTER);

ChangeListener listener = new ChangeListener() {

public void stateChanged(ChangeEvent e) {

SpinnerModel source = (SpinnerModel)e.getSource();

System.out.println("The value is: " + source.getValue());

}

};

model.addChangeListener(listener);

model2.addChangeListener(listener);

model3.addChangeListener(listener);

frame.pack();

frame.show();

}

}

您可以参阅本文在 developerWorks 全球站点上的

英文原文

.

请为 spin 取出一个 JSpinner。下载我们在本文中使用的

源文件

请阅读在正式的 1.4 发行版文档中的

JSpinner

请利用其

javadoc

学习使用

JSpinner

请利用其

javadoc

学习使用

JFormattedTextField

Kelvin Lawrence 在

“Java

基本类:Java GUI 开发新标准”

中介绍了 JFC

的性能和灵活性(developerWorks,1998 年 5 月)。

Java 可访问性复选列表,是 IBM 与 Sun Microsystems

共同努力的成果,可向您显示如何创建可访问的应用程序。

Checkpoint 2.1

特别讨论了在应用程序中使用 JFC/Swing

组件的问题。

如果您使用 VisualAge for Java 开发 Java

应用程序,就应该阅读本指南,它演示了

使用带有 VisualAge for Java 的 Swing 组件

java的spinner_java中的spinner | 学步园相关推荐

  1. java 调用cpp_java jni 调用cpp文件中的方法 | 学步园

    这里说下最近修改nutch的源码碰到的调用cpp文件中的方法. 刚刚开始的时候,想直接在fetch.java中直接写jni接口.后来发现这样会留下不好的编程习惯.自己动手在fetch下写一个类.Hel ...

  2. java treetable_在Swing中创建TreeTable | 学步园

    TreeTable是Tree和Table的一个结合- 就是一个即能够展开和收起行,同时也能够显示多个列的组件.在Swing的标准包里没有一个叫做JtreeTable的组件,但是我们很容易通过把Jtre ...

  3. java web定时器_java的web项目中使用定时器 | 学步园

    之前接触过程序中的定时任务,但是没去自己亲自尝试过.终于这次抽空搞了一下.(一定要自己去操作,才能长经验,光看到过是没用的) 以下是两种方法,我使用的是监听的方法. JAVA WEB定时器,定时器的启 ...

  4. java jce 安装_BouncyCastle JCE 的安装配置及在java中的使用 | 学步园

    安装BouncyCastle JCE应该按照如下步骤: 1)下载提供者 BouncyCastle可以从www.bouncycastle.org下载,下载后请将它解压缩. 2)将JAR文件拷贝到适当位置 ...

  5. java jframe_java中的JFrame | 学步园

    JFrame a=new JFrame(); JFrame() 构造一个初始时不可见的新窗体. JFrame(GraphicsConfiguration gc) 以屏幕设备的指定 GraphicsCo ...

  6. java个人所得税计算_java个人所得税计算器 | 学步园

    class Caculate{ private String name; private double money; private double actual; /** * @param usern ...

  7. el表达式遍历list中的list_EL表达式获取map和list集合中的值 | 学步园

    Map的每个对象以key=value的形式给出 当forEach tag的item属性中的表达式的值是java.util.Map时,在var中命名的变量被设置为类型是java.util.Map.Ent ...

  8. java 项目心得_读懂JAVA WEB项目的一点心得 | 学步园

    今日接手一个JAVA开发的WEB项目,代码已是现成的(无文档),需要熟悉和日后修改.很久没有写代码了,于是有点儿不知如何下手,现在将自己感觉有用的做法记录一下. 一.熟悉应用整体功能 WEB项目的话, ...

  9. vector用法 java equals_java泛型vector的用法 | 学步园

    java.util  类 Vector boolean add(E o) 将指定元素追加到此向量的末尾. void add(int index, E element) 在此向量的指定位置插入指定的元素 ...

最新文章

  1. [Linux内核]软中断与硬中断
  2. Tencent云联网灾备方案
  3. ADC的参数分析以及采样分析
  4. hadoop完全分布式集群群起
  5. java创建文件夹代码_Java创建文件夹及文件实例代码
  6. [Trie] Luogu P2580 于是他错误的点名开始了
  7. “==”和“equals”
  8. SQL Server 2008——SQL命令INSERT
  9. MyBatis框架 注解
  10. selenium-python:运行后报浏览器不兼容 disconnected: unable to connect to renderer
  11. python实现k-shell复杂网络_企业网络结构复杂,如何高效、简单实现异地组网?...
  12. HanLP-地名识别调试方法
  13. PHP解密小程序加密信息
  14. supervisor备忘
  15. 网站被攻击了怎么办?
  16. 虚拟汽车加油问题 (贪心算法)
  17. WiFi通信字节乱码问题的产生原因及解决方法
  18. No installations recognized 以及 nvm use切换node版本无效的解决办法
  19. 软件界面中一些易混淆/易用错的界面文案,以及一些约定俗成的文案约定
  20. 决策树(二)——决策树的生成

热门文章

  1. leetcode 427. Construct Quad Tree | 427. 建立四叉树(分治法)
  2. Redis使用场景、Redis线程模型、Redis持久化 - 公开课笔记
  3. 【JavaScript】JS事件机制学习
  4. C语言文件操作(一)产生0~M范围内的N个随机数
  5. java高级用法之:调用本地方法的利器JNA
  6. I/O多路复用:select、poll和epoll详解
  7. 01.elasticsearch-mapping全面解析
  8. 【解题报告】Leecode 643. 子数组最大平均数 I——Leecode 刷题系列
  9. 【简洁写法】剑指 Offer 32 - I. 从上到下打印二叉树
  10. 【详解!思路清晰】1095 解码PAT准考证 (25分)