ciao ragazzi vi propongo un mio problema... ho creato un oggetto JFormattedTextField dove al suo interno posso inserire solo numeri ( lettere non se ne possono inserire).. e fin qui tutto ok...il problema e quando mi vado a prendere il valore che metto dentro questa casellina... mi da un errore di questo tipo:
codice:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String
	at gui.ImportoCategoriaPanel.getImporto(ImportoCategoriaPanel.java:133)
	at gui.ImportoCategoriaPanel.actionPerformed(ImportoCategoriaPanel.java:151)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
in pratica non mi fa il cast del valore che prendo.... giu c'e tutto il code della classe che ho creato ma ho evidenziato il metodo getImporto che e dove si verifica il problema...solo che il compilatore non mi fa nessuno errore e non capisco perche non riesce a farmi il cast...il valore che mi serve prendere e un double.... potreste darmi qualche consiglio!!!! grazie ragazzi

codice:
public class ImportoCategoriaPanel extends JPanel implements ActionListener{
	
	JPanel importoLavoriPanel,categoriaPanel;

	JTextArea categorieSelezionate;
	JComboBox classeCategoria;
	JButton add,sub;
	JFormattedTextField importo;

	
	public ImportoCategoriaPanel(){
		importoLavoriPanel=new JPanel();
		categoriaPanel=new JPanel();
		//importo=new JTextField();
		categorieSelezionate=new JTextArea();
		classeCategoria=new JComboBox();
		add=new JButton(">>");
		sub=new JButton("<<");
		
		add.addActionListener(this);
		sub.addActionListener(this);
		
		importoLavoriPanel.setBorder(BorderFactory.createTitledBorder(
				BorderFactory.createLineBorder(Color.RED),
				"Importo Lavori"));
		
		JLabel preventivoLabel=new JLabel("preventivo");
		
		
		
		importo = new JFormattedTextField(new 
           InternationalFormatter(NumberFormat.getIntegerInstance())
           {
              protected DocumentFilter getDocumentFilter()
              {
                 return filter;
              }
              private DocumentFilter filter = new IntFilter();
           });
		importo.setBorder(BorderFactory.createLoweredBevelBorder());
     
     
		
		JPanel p1=new JPanel();
		p1.setLayout(new BorderLayout());
		p1.add(preventivoLabel,BorderLayout.WEST);
		p1.add(importo);
		importoLavoriPanel.setLayout(new BorderLayout());
		importoLavoriPanel.add(p1,BorderLayout.NORTH);
		
		categoriaPanel.setBorder(BorderFactory.createTitledBorder(
				BorderFactory.createLineBorder(Color.RED),
				"Categorie"));
		
		JPanel p2=new JPanel();
		
		classeCategoria.addItem("I-a");
		classeCategoria.addItem("I-b");
		classeCategoria.addItem("I-c");
		classeCategoria.addItem("I-d");
		classeCategoria.addItem("I-e");
		classeCategoria.addItem("I-f");
		classeCategoria.addItem("I-g");
		classeCategoria.addItem("II-a");
		classeCategoria.addItem("I-b");
		classeCategoria.addItem("I-c");
		classeCategoria.addItem("III-a");
		classeCategoria.addItem("III-b");
		classeCategoria.addItem("III-c");
		classeCategoria.addItem("IV-a");
		classeCategoria.addItem("IV-b");
		classeCategoria.addItem("IV-c");
		classeCategoria.addItem("V");
		classeCategoria.addItem("VI-a");
		classeCategoria.addItem("VI-b");
		classeCategoria.addItem("VII-a");
		classeCategoria.addItem("VII-b");
		classeCategoria.addItem("VII-c");
		classeCategoria.addItem("VIII");
		classeCategoria.addItem("IX-a");
		classeCategoria.addItem("IX-b");
		classeCategoria.addItem("IX-c");
		
		
		p2.setLayout(new GridLayout(3,1));
		p2.add(new JLabel("Classe-Categoria"));
		p2.add(classeCategoria);
		
		JPanel addSub=new JPanel();
		addSub.setLayout(new GridLayout(1,2));
		addSub.add(sub);
		addSub.add(add);
		
		p2.add(addSub);
		
		JPanel p3=new JPanel();
		p3.setLayout(new BorderLayout());
		p3.add(new JLabel("categorie selezionate"),BorderLayout.NORTH);
		p3.add(new JScrollPane(categorieSelezionate));
		
		categoriaPanel.setLayout(new GridLayout(1,2));
		categoriaPanel.add(p2);
		categoriaPanel.add(p3);
		
		
		setLayout(new GridLayout(1,2));
		add(categoriaPanel);
		add(importoLavoriPanel);
		
		
	}
	public String getClasseCategoria(){
		return categorieSelezionate.getText();
	}

	
	public double getImporto(){
		Object value = importo.getValue();
		double y=Double.parseDouble((String) value);
		return y;
		
	}

	
	public static void main(String[] args) {
		JFrame tmp=new JFrame();
		tmp.add(new ImportoCategoriaPanel());
		tmp.setVisible(true);
		tmp.setSize(300,300);
		tmp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==add){
			categorieSelezionate.setText((String)classeCategoria.getSelectedItem());
			add.setEnabled(false);

		}
		else if(e.getSource()==sub){
			categorieSelezionate.setText("");
			add.setEnabled(true);
		}
	}
}

class IntFilter extends DocumentFilter
{
   public void insertString(FilterBypass fb, int offset, String string, javax.swing.text.AttributeSet attr) 
      throws BadLocationException 
   {
      StringBuilder builder = new StringBuilder(string);
      for (int i = builder.length() - 1; i >= 0; i--)
      {
         int cp = builder.codePointAt(i);
         if (!Character.isDigit(cp) && cp != '-') 
         {
            builder.deleteCharAt(i);
            if (Character.isSupplementaryCodePoint(cp))
            {
               i--;
               builder.deleteCharAt(i);
            }
         }
      }
      super.insertString(fb, offset, builder.toString(), attr);
   }

   public void replace(FilterBypass fb, int offset, int length, String string, javax.swing.text.AttributeSet attr) 
      throws BadLocationException 
   {
      if (string != null) 
      {
         StringBuilder builder = new StringBuilder(string);
         for (int i = builder.length() - 1; i >= 0; i--)
         {
            int cp = builder.codePointAt(i);
            if (!Character.isDigit(cp)) 
            {
               builder.deleteCharAt(i);
               if (Character.isSupplementaryCodePoint(cp))
               {
                  i--;
                  builder.deleteCharAt(i);
               }
            }
         }
         string = builder.toString();
      }
      super.replace(fb, offset, length, string, attr);
   }
}