A mógłbyś mi powiedzieć kiedy jest wywoływana metoda getCellEditorValue
z klasy MyTableCellEditor
? Bo chcę użyć jednego obiektu tej klasy dla dwóch obiektów klasy JTable i w pierwszej tabeli mam maskę wartości w złotówkach a w drugiej tabeli mam maskę wartości m3, mogę stworzyć dwa różne edytory ale nie wiem czy to będzie wydajne. W środku tego edytora chciałem tworzyć obiekt component z daną maską zależną od tabeli działa mi to tylko dla pierwszej jakiejkolwiek edytowanej komórki potem komórka jest bez maski. Chciałem stworzyć trzy osobne componenty każdy z inną maską tylko nie wiem kiedy wywołuje się metoda getCellEditorValue
package GUI;
import java.awt.Component;
import java.awt.Font;
import java.text.ParseException;
import javax.swing.AbstractCellEditor;
import javax.swing.JFormattedTextField;
import javax.swing.JTable;
import javax.swing.table.TableCellEditor;
import javax.swing.text.MaskFormatter;
public class MyTableCellEditor extends AbstractCellEditor implements TableCellEditor{
private JFormattedTextField component;
private MaskFormatter mask=null;
private MaskFormatter mask1=null;
public MyTableCellEditor(){
try{
mask = new MaskFormatter("***** m3");
mask.setValidCharacters("1234567890, ");
mask1 = new MaskFormatter("***** zł");
mask1.setValidCharacters("1234567890, ");
//component=new JFormattedTextField(mask);
}catch(ParseException e){
e.getMessage();
}
}
@Override
public Object getCellEditorValue() {
// TODO Auto-generated method stub
return component.getText();
}
@Override
public Component getTableCellEditorComponent(JTable tab, Object value, boolean isSelected, int rowIndex, int colIndex) {
// TODO Auto-generated method stub
if((colIndex==5) || (colIndex==6)){
component=new JFormattedTextField(mask);
}
else if(tab.getColumnName(1).equals("Cena")){
component=new JFormattedTextField(mask1);
}
else{
component=new JFormattedTextField();
}
component.setText(((String)value));
component.setFont(new Font("Arial",Font.PLAIN,20));
return component;
}
}