J'utilise JXTable qui a un setColumnControlVisible (true) qui affiche un bouton dans le coin supérieur droit au-dessus du défilement, nous pouvons afficher et masquer la colonne en appuyant dessus. Je veux me rappeler les changements quand l'application se rapproche, mais ne peut pas encore comprendre, Voici ce que j'ai essayé jusqu'à présent. Je vérifie le src de JxTable, mais n'a pas comment obtenir l'index de colonne ou le numéro de colonne qui est caché.Jtable affiche et masque la colonne et enregistre la configuration.
package paractice;
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.table.AbstractTableModel;
import org.jdesktop.swingx.JXTable;
public class TableTest extends JFrame{
private static final long serialVersionUID = 1L;
private JXTable table;
public TableTest() {
setLayout(new BorderLayout());
table = new JXTable(new model());
//add(table.getTableHeader(), BorderLayout.NORTH);
add(new JScrollPane(table), BorderLayout.CENTER);
table.setColumnControlVisible(true);
setSize(700, 700);
}
public class model extends AbstractTableModel{
String[] columns = {"column1", "column2", "column3", "column4", "column5"};
@Override
public String getColumnName(int column) {
return columns[column];
}
@Override
public boolean isCellEditable(int arg0, int arg1) {
return super.isCellEditable(arg0, arg1);
}
@Override
public void setValueAt(Object arg0, int row, int col) {
super.setValueAt(arg0, row, col);
fireTableCellUpdated(row, col);
}
public int getColumnCount() {
return columns.length;
}
public int getRowCount() {
return 0;
}
public Object getValueAt(int arg0, int arg1) {
return null;
}
}
public static void main(String args[]) {
TableTest test = new TableTest();
test.setVisible(true);
}
}
Merci. une telle logique simple. –