J'essaie d'utiliser une colonne vide comme diviseur entre des paires de colonnes dans un JTable
. Voici une image et un code pour ce que j'ai jusqu'ici. Je sais que je peux changer le look en utilisant un TableCellRenderer
personnalisé. Avant de me lancer dans cette voie, y a-t-il une meilleure façon de faire? Toutes les idées ont apprécié.Utilisation d'une colonne vide comme diviseur dans un JTable
TablePanel.png http://i42.tinypic.com/1zxpfkj.png
import javax.swing.*;
import javax.swing.table.*;
public class TablePanel extends JPanel {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame f = new JFrame("TablePanel");
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.add(new TablePanel());
f.pack();
f.setVisible(true);
}
});
}
public TablePanel() {
TableModel dataModel = new MyModel();
JTable table = new JTable(dataModel);
table.getColumnModel().getColumn(MyModel.DIVIDER).setMaxWidth(0);
JScrollPane jsp = new JScrollPane(table);
jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
this.add(jsp);
}
private static class MyModel extends AbstractTableModel {
private static final int DIVIDER = 2;
private final String[] names = { "A1", "A2", "", "B1", "B2" };
@Override
public int getRowCount() {
return 32;
}
@Override
public int getColumnCount() {
return names.length;
}
@Override
public String getColumnName(int col) {
if (col == DIVIDER) return "";
return names[col];
}
@Override
public Object getValueAt(int row, int col) {
if (col == DIVIDER) return "";
return (row + 1)/10.0;
}
@Override
public Class<?> getColumnClass(int col) {
if (col == DIVIDER) return String.class;
return Number.class;
}
}
}
+1 Merci de me rappeler tabulant. Ce n'est pas important pour ça, mais l'article est bon. Mon idée de colonne vide a également fait un problème de tri. –
Oh, c'est ce que ça veut dire! Je l'ai changé ci-dessous. Merci. –