当前位置:七道奇文章资讯编程技术Java编程
日期:2011-01-26 02:54:00  来源:本站整理

<b>Swing 的新 Spinner 组件</b>[Java编程]

赞助商链接



  本文“<b>Swing 的新 Spinner 组件</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

  Java 2 SDK,1.4 beta 的最新发行版向 JFC/Swing 组件集增添了两个强盛的新组件.此中一个是 JSpinner ,它利用户可以便利地挑选日期、数字或拾取列表中的选项.(另一个是 JFormattedTextField ,用于支持格局化的输入.)

  开始启动

  JSpinner 使您可成立一个排序的值列表,该表在挑选框中每次显示一个选项,如图 1 所示.用户通过点击上移和下移箭头举行挑选.

  图 1. JSpinner 示例

        

  用户利用组件或键盘上的上移和下移箭头举行挑选.他们也可输入自己的挑选.但是,与 JComboBox 差别, JSpinner 不供应下拉列表挑选,所以各个挑选以及它们的次序应有一定的意义.

  要利用类,可简单地成立一个供挑选的元素调集(在 List 或数组中),从列表中成立一个 SpinnerModel ,并为模子成立一个 JSpinner :

  清单 1. 简单的 JSpinner 用法

  按照您所用的输入范例,有以下几个可用于成立组件数据模子的帮忙类:

  SpinnerDateModel :用于承受日期输入.该类支持通过将 Calendar 类中的常数设置为差别的值来更改日期;比方, Calendar.WEEK_OF_MONTH 每次将日期更改一周.

  SpinnerListModel :用于承受来自值列表的输入.

  SpinnerNumberModel :用于承受已设定好步长的一定范围内的数字( int 或 double )的输入.

  每个 SpinnerModel 履行取决于用于输入值的编辑器.此编辑器必须是一个 JComponent ;系统定义的编辑器子类 JSpinner.DefaultEditor .此中一个可用于每个模子:

  JSpinner.DateEditor :用于 SpinnerDateModel .答应您定制输入日期格局.

  JSpinner.ListEditor :用于 SpinnerListModel .支持 type-ahead 来对值举行定位.

  JSpinner.NumberEditor :用于 SpinnerNumberModel .答应您定制十进制格局的情势.

  全部这些类(及更多类)之间的关系如图 2 所示.

  图 2. JSpinner UML 关系表示图

1 String[] months = new DateFormatSymbols().getMonths();
2   SpinnerModel model = new SpinnerListModel(months);
3   JSpinner spinner = new JSpinner(model);
4

1 ChangeListener listener = new ChangeListener() {
2     public void stateChanged(ChangeEvent e) {
3       SpinnerModel source = (SpinnerModel)e.getSource();
4       System.out.println("The value is: " + source.getValue());
5     }
6   };
7   model.addChangeListener(listener);
8

  让我们来看一下利用全部三种差别的 spinner 模子的示例(清单 3).列表模子利用从 DateFormatSymbols 类取出的月份名称集.日期模子示例更改编辑器的输入格局.(beta 发行版中好象存在一处错误,当编辑器更改时不重新格局化字段.)当利用该字段旁边的箭头时,每次也可将日期移动一周.数字模子示例让用户选取从 0 到 100 之间的一个数字,当利用箭头时每次跳 5 个数.请注意:用户可输入肆意数字,而并不但限于 5 的倍数.

  关于全部组件来说,当每个 spinner 值确切发生更改时,所连的侦听器将显示同一改变.假如利用光标键更改月、日或年,您会注意到直到按下回车键这些值才发生更改.

  清单 3. JSpinner 完好示例

1 import javax.swing.*;
2 import javax.swing.event.*;
3 import java.text.*;
4 import java.awt.*;
5 import java.util.*;
6 public class Spinner {
7   public static void main (String args[]) throws Exception {
8     JFrame frame = new JFrame("Spinner");
9     frame.setDefaultCloseOperation(3);
10     String[] months = new DateFormatSymbols().getMonths();
11     SpinnerModel model = new SpinnerListModel(months);
12     JSpinner spinner = new JSpinner(model);
13     frame.getContentPane().add(spinner, BorderLayout.NORTH);
14     SpinnerDateModel model2 = new SpinnerDateModel();
15     model2.setCalendarField(Calendar.WEEK_OF_MONTH);
16     JSpinner spinner2 = new JSpinner(model2);
17     JSpinner.DateEditor editor2 = new JSpinner.DateEditor(
18       spinner2, "MMMMM dd, yyyy");
19     spinner2.setEditor(editor2);
20     frame.getContentPane().add(spinner2, BorderLayout.SOUTH);
21     SpinnerNumberModel model3 = new SpinnerNumberModel(50, 0, 100, 5);
22     JSpinner spinner3 = new JSpinner(model3);
23     frame.getContentPane().add(spinner3, BorderLayout.CENTER);
24     ChangeListener listener = new ChangeListener() {
25       public void stateChanged(ChangeEvent e) {
26         SpinnerModel source = (SpinnerModel)e.getSource();
27         System.out.println("The value is: " + source.getValue());
28       }
29     };
30     model.addChangeListener(listener);
31     model2.addChangeListener(listener);
32     model3.addChangeListener(listener);
33     frame.pack();
34     frame.show();
35   }
36 }
37


  以上是“<b>Swing 的新 Spinner 组件</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .