JFormattedTextField intField1 = new JFormattedTextField(NumberFormat.getIntegerInstance());
intField1.setValue(new Integer(0));
比如我创建了这样一个intField1实例。
但是在文本框中获取输入的数字时
Integer value = (Integer) intField1.getValue();
却总是产生异常 Long 不能转为Integer??
明明format就是Integer类型的啊。。
小弟刚学java。不明白,前来请教。。

解决方案 »

  1.   

    那有什么办法让intField1.getValue();
    的返回类型成为Integer?
    在创建的时候不是就申明了是
    NumberFormat.getIntegerInstance();
    刚刚查了下doc 说NumberFormat.getIntegerInstance()返回的是默认的整数类型,就是说也可能是Long?
      

  2.   


    import javax.swing.event.*;
    import javax.swing.*;
    import javax.swing.event.DocumentListener;
    import javax.swing.text.*;
    import java.awt.*;
    import java.text.*;
    public class TestJFormatedTextField extends JFrame implements DocumentListener{ JFormattedTextField intField1 = new JFormattedTextField(NumberFormat.getIntegerInstance());
    JFormattedTextField intField2 = new JFormattedTextField(NumberFormat.getIntegerInstance());
    Document doc;
    Long j = new Long(0);
    TestJFormatedTextField()
    {
    // intField.setBounds(20, 20, 40, 40);
    setSize(200,200);
    setLayout(new FlowLayout());
    intField1.setColumns(4);
    doc = intField1.getDocument();
    intField2.setColumns(4);
    intField1.setValue(new Long(0));
    JPanel panel = new JPanel();
    panel.add(intField1);
    add(panel);
    add(intField2);
    doc.addDocumentListener(this);
    setVisible(true);
    validate();
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public void removeUpdate(DocumentEvent e)
    {
    set(e);
    }
    public void insertUpdate(DocumentEvent e){
    set(e);
    }
    public void changedUpdate(DocumentEvent e){
    set(e);
    }
    private void set(DocumentEvent e){
    j = (Long) intField1.getValue();
    intField2.setText(String.valueOf(j));
    }

    public static void main(String[] args)
    {
    TestJFormatedTextField t =new TestJFormatedTextField();
    }
    }我把代码贴出来吧。就是那个j是Integer类型的时候为什么不可行?