La personnalisation d'un éditeur pour PowerTable peut ce faire de 2 façons :
- Par un simple liste déroulante.
- Par la création d'un éditeur personnalisé.
Concernant la simple liste déroulante, il suffit d'implementer la fonction "configureEditor(self, colIndex, colName)"
et de renvoyer un Tupple du type :
{'options': [(0, 'Option 0'), (1, 'Option 1'), (2, 'Option 2')]}
l'exemple est suffisamment claire pour être exploité.
Concernant un éditeur personnalisé :
il faut implementer un peu plus de code afin de renvoyer un objet de type TableCellEditor.
voici un exemple de code qui en plus d'une liste d'option permet aussi à l'utilisateur de saisir une valeur.
from javax.swing.table import TableCellEditor from javax.swing import JTextField; from javax.swing import AbstractCellEditor, JComboBox; class MyTableCellEditor ( TableCellEditor, AbstractCellEditor): def __init__(self, tableComponent): self.table= tableComponent self.cbValues = None #Construction de la liste def getTableCellEditorComponent(self, table, value, isSelected, rowIndex, vColIndex): # Acces à un élément de la table.... si nécessaire intColumnValue = self.table.data.getValueAt(rowIndex,"Test") # Création de la liste de valeur. newList = ['Valeur 1','Valeur 2','Valeur 3'] # Création de la combo déclarée éditable. self.cbValues = JComboBox(newList) self.cbValues.setEditable(True) # renvoi de l'éditeur return self.cbValues def getCellEditorValue(self): return self.cbValues.getSelectedItem() myEditor = MyTableCellEditor(self) if colName == 'Shift': return {'editor': myEditor}
ci-joint un export de fenêtre contenant cette table.
Cet article a-t-il été utile ?
C'est super !
Merci pour votre commentaire
Désolé ! Nous n'avons pas pu vous être utile
Merci pour votre commentaire
Commentaires envoyés
Nous apprécions vos efforts et nous allons corriger l'article