Comment changer la couleur d'un JTable ensemble de la ligne d'en avoir un particulier de la valeur de la colonne
J'ai une Jtable qui est renseigné à partir d'un tableau de valeurs.
Mon code ressemble à ceci:
private static final String[] columnNames = {"Line Number", "Error","Fix Proposed","Percentage (%)"};
static DefaultTableModel model = new DefaultTableModel(null,columnNames);
public static void DisplayMyJList(List<CaptureErrors> x,String extension,
ArrayList<Integer> l,ArrayList<Integer> p,
ArrayList<String> e,ArrayList<String> s) throws IOException {//Method to Dynamic get values to be populated in Jtable.
String theExtension = extension;
if(FILE_EXTENSION.equals("java")) {
for(CaptureErrors ex: x) {
Vector row = new Vector();
row.add(ex.getLinenumber());
row.add(ex.getMyfounderror());
row.add(ex.getMycorrection());
row.add(ex.getMyPercentage()+"%");
model.addRow( row );
//model.setRowColour(1, Color.YELLOW);
}
}
table = new JTable(model);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.setFillsViewportHeight(true);
table.setShowGrid(true);
table.setShowVerticalLines(true);
table.setGridColor(new Color(0,128,0));
JTableHeader header = table.getTableHeader();
table.setBackground(new Color(255,228,225));
table.setEnabled(true);
header.setFont(new Font("Dialog", Font.CENTER_BASELINE, 12));
header.setBackground(Color.black);
header.setForeground(Color.yellow);
JScrollPane pane4 = new JScrollPane(table);
Je peux remplir la Jtable à partir du tableau de valeurs à l'Aide d'un JButton. Je veux avoir une condition où si la colonne "pourcentage" ,obtenir toutes les valeurs dans cette colonne >le 30, il met en évidence les lignes de couleur.rouge.
Je ne veux pas d'utilisateur TableCellRendererComponent .Je veux que cette action est effectuée en cliquant sur le Jbutton.
Le réel Jtable ressemble à ceci:
Ensuite, selon ce que je veux obtenir, les 2 premières lignes doivent être mis en évidence en rouge. Toute aide appréciée.
Votre table est le traitement de toutes les données comme une chaîne de caractères. Vous devriez vraiment écraser le
getColumnClass()
méthode pour retourner le bon de classe de sorte que chaque colonne peut être formaté correctement.OriginalL'auteur Ms_Joe | 2013-03-25
Vous devez vous connecter pour publier un commentaire.
L'un des problèmes avec l'API de rendu, c'est qu'il est difficile de fournir composé de graphistes. Il y a des façons de le faire, ne vous méprenez pas, mais il aurait été agréable d'avoir construit en...[fin du délire]...
L'idée de base est que vous vous voulez mettre en place une série de convertisseurs qui s'étendent à partir d'une base de moteur de rendu qui contient la logique nécessaire pour déterminer ce qu'il doit faire en vertu des conditions requises.
Vous aurez besoin d'un moteur de rendu personnalisé pour chaque colonne (de vous exemple, c'est 4) et de l'appliquer chaque colonne de la table
Ou vous pouvez simplement utiliser SwingLabs
JXTable
qui a intégré de soutien pour la ligne surligneursOriginalL'auteur MadProgrammer
Voir l'approche de l' Ligne De Tableau De Rendu pour une solution sans la création d'un custom convertisseurs.
Vous pouvez également vouloir vérifier Convertisseurs De Format De Tableau de sorte que vous pouvez mettre en forme la colonne pourcentage facilement.
OriginalL'auteur camickr
Vous pouvez créer un rendu de cellule personnalisé. Dans sa mise en œuvre, de vérifier si la valeur en pourcentage > 30 pour une ligne donnée, puis mettez en surbrillance la cellule.
Par exemple:
Vous pouvez activer/désactiver cette logique de rendu lors de l'action si nécessaire.
Voir En Utilisant Des Convertisseurs pour plus de détails.
OriginalL'auteur tenorsax