Question

Je Cleary faire quelque chose de mal. Je pense serait le composant, mais voici le problème. Ceci est mon CellRenderer:

public class WildcardCellRenderer implements TableCellRenderer {

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int rowIndex, int vColIndex) {

        JTextField c = new JTextField();
        c.setBorder(javax.swing.BorderFactory.createEmptyBorder());

        if(vColIndex == 2){
            if((Integer)value == 0) c.setText("No") ;
            else c.setText("Si");
        } else c.setText(value.toString());

        return c;
    }

}

et voilà comment je mis en place la chose dans mon panneau:

    this.table.setDefaultRenderer(Object.class, new WildcardCellRenderer() );

Le problème est que quand je mis en place les lignes ce renderer deviennent unselectable. Dois-je utiliser un autre composant pour afficher ce que je dois à l'affichage? Fondamentalement, je suis afficher une valeur 0/1 comme Non / Oui valeur.

Était-ce utile?

La solution

Vous devez prendre la « isSelected » valeur en compte et mettre en place la couleur de fond en conséquence comme ceci:

 if (isSelected) {
        c.setBackground(table.getSelectionBackground());
        c.setForeground(table.getSelectionForeground());
    }
    else {
        c.setBackground(table.getBackground());
        c.setForeground(table.getForeground());
    }

J'ai pris cette d'un de mes ListCellRenderers mais je suppose que cela fonctionne même avec les TableCellRenderers.

Oh et BTW, vous pouvez réutiliser le champ de texte, il n'y a pas besoin de créer un nouveau champ de texte pour chaque cellule, de sorte que vous pouvez rendre le champ de texte un membre de votre classe et à l'intérieur de la méthode juste quelque chose de changement dans votre champ de texte comme le contenu / couleur et le retourner. De cette façon, vous ne finissent pas avec un million de cas de textfield sur une grande table.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top