A ordem dos ifs é muito importante aqui, já que no caso do JFormattedTextField ele também é uma instância de JTextField, então se o outro if viesse antes, ele tentaria limpar usando setText() no lugar de setValue().
Aqui um form de exemplo, tem 10 JTextField e 1 JFormattedTextField.
packageteste.eduardo.pessoal;importjava.awt.Container;importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.text.SimpleDateFormat;importjava.util.Date;importjavax.swing.AbstractAction;importjavax.swing.Action;importjavax.swing.JButton;importjavax.swing.JComponent;importjavax.swing.JFormattedTextField;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JTextField;publicclassTesteGUIUtilsextendsJFrame{privatestaticfinallongserialVersionUID=1L;publicclassResetActionextendsAbstractAction{privatestaticfinallongserialVersionUID=1L;publicResetAction(){putValue(Action.NAME,"Reset");putValue(Action.SHORT_DESCRIPTION,"Limpa os dados do formulário");}publicvoidactionPerformed(ActionEvente){Objectsource=e.getSource();if(sourceinstanceofJComponent){JComponentcomponent=(JComponent)source;Containerform=component.getTopLevelAncestor();GUIUtils.limparCamposNoContainer(form);}}}publicTesteGUIUtils(){super(TesteGUIUtils.class.toString());setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JPanelpanel=newJPanel(newGridLayout(12,1));for(inti=0;i<10;i++){panel.add(newJTextField());}JFormattedTextFieldfield=newJFormattedTextField(newSimpleDateFormat("dd/MM/yyyy"));field.setValue(newDate());panel.add(field);JButtonbutton=newJButton(newTesteGUIUtils.ResetAction());panel.add(button);add(panel);pack();}publicstaticvoidmain(String[]args){newTesteGUIUtils().setVisible(true);}}