Vous tentez d'utiliser JTable.setDefaultEditor() mais il ne semble pas activer. Le définir spécifiquement pour une colonne fonctionne mais ne le définit pas comme l'éditeur par défaut. La commande println n'est pas renvoyée mais est visible lors de la définition d'une colonne spécifique.JTable.setDefaultEditor() ne fonctionne pas mais le réglage sur un champ spécifique fonctionne.
Existe-t-il une étape supplémentaire requise lors de la définition d'un éditeur par défaut?
import java.awt.*;
import javax.swing.*;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableColumn;
public class Main {
public static void main(String[] argv) throws Exception {
JFrame myFrame = new JFrame();
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
String columnNames[] = { "Column 1", "Column 2", "Column 3" };
String dataValues[][] =
{
{ "12", "234", "67" },
{ "-123", "43", "853" },
{ "93", "89.2", "109" },
{ "279", "9033", "3092" }
};
JTable table = new JTable(dataValues, columnNames);
myFrame.getContentPane().add(table);
table.setDefaultEditor(String.class, new MyTableCellEditor());
// TableColumn col = table.getColumnModel().getColumn(0);
// col.setCellEditor(new MyTableCellEditor());
myFrame.pack();
myFrame.setVisible(true);
}
}
class MyTableCellEditor extends AbstractCellEditor implements TableCellEditor, FocusListener
{
JComponent component = new JTextField();
public MyTableCellEditor()
{
component.addFocusListener(this);
}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected,
int rowIndex, int vColIndex) {
System.out.println("Inside getTableCellEditorComponent()");
((JTextField) component).setText((String) value);
return component;
}
public Object getCellEditorValue() {
return ((JTextField) component).getText();
}
@Override
public void focusGained(FocusEvent e) {
// TODO Auto-generated method stub
}
@Override
public void focusLost(FocusEvent e) {
System.out.println("Focus Lost");
}
}
-nous Object.class travaillé. Je vais devoir vérifier l'URL fourni un peu plus près que j'ai déjà jeté un coup d'oeil à cela, mais doit avoir manqué quelques informations. –
Cela a à voir avec quelles informations 'DefaultTableModel' renvoie par défaut' getColumnClass', d'où la seconde suggestion;) – MadProgrammer