`
mylxiaoyi
  • 浏览: 320491 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spinner Model Controls(三)

 
阅读更多

14.4 JSpinner编辑器

对于每一个JSpinner可用的模型,都有一个附属支持的JSpinner内联类可用。在其中模型允许我们控制对于组件哪些可以选择,微调编辑器允许我们控制如何显示与编辑每一个可选中的值。

14.4.1 JSpinner.DefaultEditor类

JSpinner的setEditor()方法允许我们使得任意的JComponent作为JSpiner的编辑顺。虽然我们一定可以做到,但是更为通常的情况是,我们将会使用一个JSpinner.DefaultEditor的一个子类。他提供了当我们使用基于JFormattedTextField的简单编辑器时所需要的基本功能。他只有一个构造函数:

public JSpinner.DefaultEditor(JSpinner spinner)
JSpinner spinner = new JSpinner();
JComponent editor = JSpinner.DefaultEditor(spinner);
spinner.setEditor(editor);

如表14-6所示,编辑器有两个属性。


不知道我们正在使用的是哪一种模型类型,我们在这个级别上也许会做的就是修改JFormattedTextField的一些显示特点。然而更通常的情况是,我们将会修改模型编辑器的自定义方面。

14.4.2 JSpinner.DateEditor类

DateEditor允许我们使用java.text包的SimpleDateFormat类的各种方面来自定义日期显示。查看SimpleDateFormat的Javadoc可以了解可用的格式模型的完整列表。如果我们不喜欢默认的显示输出,我们可以通过向第二个构造函数传递一个新的格式来修改。

public JSpinner.DateEditor(JSpinner spinner)
SpinnerModel model = new SpinnerDateModel();
JSpinner spinner = new JSpinner(model);
JComponent editor = JSpinner.DateEditor(spinner);
spinner.setEditor(editor);
public JSpinner.DateEditor(JSpinner spinner, String dateFormatPattern)
SpinnerModel model = new SpinnerDateModel();
JSpinner spinner = new JSpinner(model);
JComponent editor = JSpinner.DateEditor(spinner, "MMMM yyyy");
spinner.setEditor(editor);

默认格式为M/d/yy h:mm a,或者对于2004年的圣诞节的某一时刻为12/25/04 12:34 PM。后一个示例将显示December 2004.

表14-7显示了编辑器的两个属性。


14.4.3 JSpinner.ListEditor类

当使用SpinnerListModel时,ListEditor并没有提供特殊的格式化支持。相反,他提供了类型支持。因为模型的所有条目都已知,编辑器尝试匹配用户已经输入的以这些条目中的一个开始的条目。他只有一个构造函数,但是我们绝不应访问这个函数。

public JSpinner.ListEditor(JSpinner spinner)

如表14-8所示,ListEditor只有一个属性。


14.4.4 JSpinner.NumberEditor类

NumberEditor的工作方式类似于DateEditor,允许我们输入字符串来自定义显示格式。与使用SimpleDateFormat不同,NumberEditor与java.text包中的DecimalFormat类相关联。类似于DateEditor,他有两个构造函数:

public JSpinner.NumberEditor(JSpinner spinner)
SpinnerModel model = new SpinnerNumberModel(50, 0, 100, .25);
JSpinner spinner = new JSpinner(model);
JComponent editor = JSpinner.NumberEditor(spinner);
spinner.setEditor(editor);
public JSpinner.NumberEditor(JSpinner spinner, String decimalFormatPattern)
SpinnerModel model = new SpinnerNumberModel(50, 0, 100, .25);
JSpinner spinner = new JSpinner(model);
JComponent editor = JSpinner.NumberEditor(spinner, "#,##0.###");
spinner.setEditor(editor);

第二个构造函数的使用显示了默认格式化字符串。如果数字足够大,则编辑器会尝试显示逗号,如果值是一个完整的数字,则他不会显示十进制。

如表14-9所示,编辑器有两个属性。


14.5 小结

在本章中,我们了解了Swing的JSpinner组件。当我们的选项集合限制为确定的值集合或是值范围,JSpinner允许我们通过在不同的选项之间进行微调来选择值。我们了解了如何提供选项集合:使用SpinnerDateModel与DateEditor选择日期集合,使用SpinnerListModel与ListEditor或是使用SpinnerNumberModel与NumberEditor。

第15章停止探讨由一个值范围内选择并且继承探讨用户在不同的文本组件中输入完整的内容。


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics