Rechercher : dans
Par :

JTable en java

Dernière réponse le 17 jui 2002 à 13:47:14 sicard_51, le 16 jui 2002 à 10:53:55 
 Signaler ce message aux modérateurs

Bonjour,

bon voila mon probleme, je manipule une JTable en java et je voudrais, que lorsque je rajoute une ligne à ma table, cette ligne puisse etre grisée ou non, cela dépendrait d'une condition. Je pense qu'il faut utiliser setBackground() mais comment l'appliquer à une ligne spécifique de la table et non à la table entière ??

Merci d'avance.

Meilleures réponses pour « JTable en java » dans :
Installer Java sous Ubuntu VoirPar défaut, Firefox n'est pas fourni avec Java. Voici comment procéder pour l'installer: Ouvrez un terminal (Menu Applications > Accessoires > Terminal) et tapez: sudo aptitude install sun-java6-jre sun-java6-plugin ou sudo aptitude install ...
[Firefox] plugin Java Jre de Sun VoirA) Les différentes variantes Java chez Sun B) Installation sous Mandriva Limited Edition 2005 ETAPE 1 ETAPE 2: Création du lien symbolique C) Installation sous debian lenny D) Installation sous ubuntu hardy heron A) Les différentes...
[Logiciel libre] Installation firefox 2.0+java+flash VoirInstallation firefox 2.0+java+flash en ligne de commande A. INTRODUCTION B. INSTALLATION FIREFOX 1. Création d'environnement 2. Téléchargement et vérification de la signature 3. Installation de Firefox 4. Démarrage de l'application C....
Télécharger Java Runtime Environment VoirJava Runtime Environment (JRE) installe la machine virtuelle Java, permettant de jouer en ligne, de discuter avec des personnes dans le monde entier, de calculer les intérêts de votre prêt immobilier ou de visualiser des images en 3D. Ces...
Java - Premier programme VoirPremière application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main...
Java - Les types de données VoirLes primitives Java est un langage orienté objet, c'est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c'est-à-dire des instances de classes. Toutefois ces objets contiennent des données possèdant un type (et...
J2EE - Java 2 Enterprise Edition VoirIntroduction au Java Framework Le «Java Framework» (Java 2 Platform) est composé de trois éditions, destinées à des usages différents : J2ME : Java 2 Micro Edition est prévu pour le développement d'applications embarquées, notamment sur des...

1

sicard_51, le 16 jui 2002 à 17:46:32

Re,

bon allez un ch'tit effort !! :-)
Si c pas possible pour une ligne, doit bien y avoir un moyen pour changer la couleur du fond d'une cellule au moins dans une JTable ??

Répondre à sicard_51

2

HackTrack, le 16 jui 2002 à 23:10:09

Pour donner une réponse comme cela, autant ne rien dire...
J'envoie la réponse demain

;-)
HackTrack

Répondre à HackTrack

3

HackTrack, le 17 jui 2002 à 10:27:45
  • +1

Tout d'bord, désolé pour ma remarque, sicard_51. Je pensais que c'était une autre personne que toi qui avait écrit "Re, bon allez encore...".

Chose promise, chose dûe, voilà le code:

1. Classe "main" qui permet de lancer l'application:
-----------------------------------------------------------

package CCM.tableTester;

/**
*
* @author HackTrack
* @version 1.0
*/
public class TableTesterLauncher {

public TableTesterLauncher() {
}

public static void main (String args[]) {
MyFrame view = new MyFrame();
view.pack();
view.setVisible(true);
}
}

2. Classe contenant la vue:
--------------------------------
package CCM.tableTester;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;

/**
*
* @author HackTrack
* @version 1.0
*/
public class MyFrame extends JFrame{
private Container c;
private InsertTable table;


/** Creates new MyFrame */
public MyFrame() {
super("Test frame");
initialize();
}

private void initialize(){
c = getContentPane();
c.setSize(320,200);
c.setLayout(new BorderLayout());
String[][] data = {
{"10","Donnée test 1"},
{"23","Valeur 2"}
};
String[] columnNames = {"N°","Data"};
DefaultTableColumnModel columnModel = new DefaultTableColumnModel();
TableColumn col_1 = new TableColumn();
col_1.setHeaderValue(columnNames[0]);
columnModel.addColumn(col_1);
TableColumn col_2 = new TableColumn();
col_2.setHeaderValue(columnNames[1]);
columnModel.addColumn(col_2);
DefaultTableModel tableModel = new DefaultTableModel(2,2);

table = new InsertTable(tableModel, columnModel, Color.red);
table.setRowSelectionAllowed(true);
c.add(new JScrollPane(table), BorderLayout.CENTER);
JPanel bottomPanel = new JPanel();
JButton addRowWithHighlight = new JButton("Ajouter une ligne avec surlignage");
addRowWithHighlight.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
table.addRow(InsertTable.HIGHLIGHT_TRUE);
c.validate();
}
});
bottomPanel.add(addRowWithHighlight);
JButton addRowWithoutHighlight = new JButton("Ajouter une ligne sans surlignage");
addRowWithoutHighlight.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
table.addRow(InsertTable.HIGHLIGHT_FALSE);
c.validate();
}
});
bottomPanel.add(addRowWithoutHighlight);
c.add(bottomPanel, BorderLayout.SOUTH);
c.validate();
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}

3. Et enfin, le code tellement attendu:
--------------------------------------------
J'ai écrit une classe InsertTable qui éténd JTable et j'y ai ajouté une méthode "addRow(boolean)" qui prend un boolean en argument. Ce boolean permet de préciser si l'on veut que la nouvelle ligne créée soit surligné (InsertTable.HIGHLIGHT_TRUE) ou non ((InsertTable.HIGHLIGHT_FALSE).

package CCM.tableTester;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;

/**
*
* @author Hacktrack
* @version 1.0
*/
public class InsertTable extends JTable{
public static final boolean HIGHLIGHT_TRUE = true;
public static final boolean HIGHLIGHT_FALSE = false;
private TableModel tableModel;
private TableColumnModel columnModel;
private static final Color DEFAULT_HIGHLIGHT_COLOR = Color.white;
private Color userHighlightColor;
private Color highlightColor;

public InsertTable(TableModel tableModel, TableColumnModel columnModel, Color userHighlightColor) {
super(tableModel, columnModel);
this.userHighlightColor = userHighlightColor;
}


public void addRow(boolean highlight){
int newRowIndex = getModel().getRowCount() + 1;
this.setModel(new DefaultTableModel(newRowIndex,2));

if(highlight==HIGHLIGHT_TRUE){
highlightColor = userHighlightColor;
}else{
highlightColor = DEFAULT_HIGHLIGHT_COLOR;
}
setSelectionBackground(highlightColor);

selectRow(newRowIndex);

validate();
}


private void selectRow(int rowIndex){
ListSelectionModel lsm = getSelectionModel();
lsm.setSelectionInterval(rowIndex-1,rowIndex-1);
setSelectionModel(lsm);
}


;-)
HackTrack

Répondre à HackTrack

4

 sicard_51, le 17 jui 2002 à 13:47:14

Excellent Hack,

je te tiens au courant pour savoir si j'arrice à l'appliquer à mon cas

merci encore

Répondre à sicard_51