JSpinner学习心得
来源:互联网 发布:盗梦三国龙将无双java 编辑:程序博客网 时间:2024/05/25 18:09
在JDK里面,定义了三个与JSpinner相对应的model,分别是SpinnerDateModel,SpinnerListModel,SpinnerNumberModel,根据不同的需求,创建不同不得model,注意在JSpinner的构造方法中如果不传入相应的model,那么就会按照SpinnerNumberModel处理。SpinnerDateModel对应JSpinner生成的编辑器为DateEditor,SpinnerListModel对应JSpinner生成的编辑器为ListEditor,SpinnerNumberModel对应JSpinner生成的编辑器为NumberEditor,当然也可以自己定义一个model,但是这时候从JDK中就可以看出-----除了上述三种model,对于别的model,它都是按照DefaultEditor来处理,这样就来了一个麻烦,就是在DefaultEditor的构造方法中就定义这里面的组件是不可以编辑的,(本人愚钝,不知如何修改,但是我想肯定可以改成可以修改的,我继承过来 弄了半天也没好。)
对于设计UI来说,三种情况似乎是少了点,例如这种情况我想利用SpinnerNumberModel,但是有一点,就是在初始化的时候不要显示“0”,而是什么也不显示。这种情况下可以这样处理,就是给JSpinner加上一个编辑器(setEditor方法),我们可以让编辑器来显示,那么如何让JSpinner中的值改变的时候去通知编辑器哪?JDK里面当JSpinner会触发fireStateChanged,fireStateChanged恰好会触发监听事件,那么这样让编辑器实现ChangeListener接口,这样就会把问题迎刃而解。可以看下source:
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.SpinnerNumberModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class Test extends JPanel {
public Test(){
this.setPreferredSize(new Dimension(60,60));
SpinnerNumberModel model = new SpinnerNumberModel();
JSpinner spinner = new JSpinner(model);
spinner.setPreferredSize(new Dimension(50,20));
spinner.setEditor( new TextFile(spinner));
this.add(spinner, BorderLayout.CENTER);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
JPanel panel = new Test();
frame.add(panel);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
class TextFile extends JTextField implements ChangeListener{
public TextFile(JSpinner spinner1){
this.spinner = spinner1;
this.spinner.addChangeListener(this);
// this.setText(spinner1.getValue().toString());
}
JSpinner spinner;
public JSpinner getSpinner() {
return spinner;
}
public void setSpinner(JSpinner spinner) {
this.spinner = spinner;
}
public void stateChanged(ChangeEvent e) {
this.setText(this.spinner.getValue().toString());
}
}
}
- JSpinner学习心得
- JSpinner
- JSpinner @ JDJ
- JSpinner心得和范例!!
- JSpinner 的事件处理
- jspinner 的 解 析
- JSpinner 输入控制
- 设置JSpinner的编辑属性
- 设置时间格式的JSpinner
- 学习心得
- 学习心得
- 学习心得
- 学习心得
- 学习心得
- 学习心得
- 学习心得
- 学习心得
- 学习心得
- 对话框模板,RegexTest by Paul DiLascia
- 算法设计作业;贪心;
- C语言 SDK编程之通用控件的使用--ListView
- 测度论与概率论基础
- MC9S12XDP512串口使用笔记(中断方式)
- JSpinner学习心得
- gzip: stdin: not in gzip format
- switch中的返回
- Hibernate映射一对多单向关联(之三)
- 安装sql server 2000成功后远程不能连接的问题
- SqlParameter.Size 属性 只有以下类型有效
- windows2003 中毒了
- 老人的请求
- 论坛里搜集的一段INet请求http的代码