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章停止探讨由一个值范围内选择并且继承探讨用户在不同的文本组件中输入完整的内容。
分享到:
相关推荐
android Spinner+sqlite 三级联动
Android spinner三级联动,实现三个下拉按钮,要求选择第一个省份时,第二个城市,第三个城市区域同步跟踪相对应的省份
利用android中的spinner控件 实现了全国省市三级联动
Spinner与Gallery都继承了AbsSpinner,AbsSpinner继承了AdapterView,因此他也表现出AdapterView的,自定义灵活好用
多个spinner一起使用,三级spinner联动显示,实现省、市、县联动显示
Android spinner 省市区三级连动源码.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
SpinnerTest 代码
自定义spinner源码,挺不错的 ,有动画哦
对于android项目开发来说,常常会用到Spinner实现下拉框的效果。而对于Spinner加载适配器的方法有多种: 1.直接加载android自带的ArrayAdapter,SimpleAdapter; 2.自定义继承BaseAdapter的适配器。 对于适配器加载...
Android spinner 案例Android spinner 案例Android spinner 案例
Android 自定义Spinner样式的 选择框背景,选择框文字属性,弹出框文字属性
简单的做的spinner的demo,其中有spinner的样式和数据绑定到spinner上等
Material Spinner Usage Add the spinner to your layout XML: Add items to the spinner and listen for clicks: MaterialSpinner spinner = (MaterialSpinner) findViewById(R.id.spinner); ...
Spinner demo
Nice Spinner NiceSpinner is a re-implementation of the default Android's spinner, with a nice arrow animation and a different way to display its content. It follows the material design guidelines, ...
android 带图标的spinner控件示例源码
Spinner多级联动.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
自定义spinner适配器,样式 用textview和listview自定义spinner
spinner带图片的的实现。 Spinner 使用方法小结 private void initMySpinner() { ArrayAdapter adapter = ArrayAdapter.createFromResource( this, R.array.phones_array, android.R.layout.simple_...
简单的设置spinner默认的标题 例如“请选择”等等