This week's book giveaway is in the Other Languages forum.
We're giving away four copies of Functional Reactive Programming and have Stephen Blackheath and Anthony Jones on-line!
See this thread for details.
Win a copy of Functional Reactive Programming this week in the Other Languages forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

MaskFormatter in JTable

 
Vege Thokr
Greenhorn
Posts: 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi All,
I'm trying to use Maskformatter in a JTable's column. I went thro' Swing tutorial and coded accordingly.
When I edit values in the table, the formatter does work and restrict the values.
But when the focus is lost, the entered value in the cell disappears.
When I debugged, I found it fails during commitEdit (precisely during stringToValue conversion). Here is the code.
please provide your thoughts.

public class CustomerIDEditor extends DefaultCellEditor {
JFormattedTextField ftf;

public CustomerIDEditor() {
super(new JFormattedTextField());
ftf = (JFormattedTextField)getComponent();
MaskFormatter formatter = null;

try {
formatter = new MaskFormatter("########");
} catch (java.text.ParseException e) {
System.err.println("formatter is bad: " + e.getMessage());
System.exit(-1);
}

ftf.setFormatterFactory(new DefaultFormatterFactory(formatter));
ftf.setValue(null);
ftf.setHorizontalAlignment(JTextField.TRAILING);
ftf.setFocusLostBehavior(JFormattedTextField.PERSIST);
} //CONSTRUCTOR ENDS

public Component getTableCellEditorComponent(JTable table,
Object value, boolean isSelected,
int row, int column) {
JFormattedTextField ftf =
(JFormattedTextField)super.getTableCellEditorComponent(
table, value, isSelected, row, column);
System.out.println("getTableCellEditorComponent called: " + value);
ftf.setValue(value);
return ftf;
}

public Object getCellEditorValue() {
JFormattedTextField ftf = (JFormattedTextField)getComponent();
try { //The text is valid,
ftf.commitEdit(); //so use it.
} catch (java.text.ParseException e) {
System.out.println("Exception:" + e.getMessage() + "Text:" + ftf.getText() ); }

System.out.println("getCellEditorValue called: " + ftf.getValue());
return ftf.getValue();
}
}
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic