Charger text dans JTable [Résolu]

Signaler
Messages postés
50
Date d'inscription
vendredi 23 mars 2018
Statut
Membre
Dernière intervention
7 mai 2019
-
Messages postés
50
Date d'inscription
vendredi 23 mars 2018
Statut
Membre
Dernière intervention
7 mai 2019
-
Bonjour,

Je me suis inspiré de ce code : http://www.fobec.com/java/1127/trier-colonnes-jtable.html pour créer ma Jtable.
Maintenant je souhaiterais charger des mots à placer dans mes colonnes à partir d'un ficher texte (.txt), mais je ne sais pas comment m'y prendre. Pourriez-vous me conseiller ?
Merci d'avance

1 réponse

Messages postés
50
Date d'inscription
vendredi 23 mars 2018
Statut
Membre
Dernière intervention
7 mai 2019

Voici la solution :

/ /JPanel Courrier		
JPanel panelTabCourrier = new JPanel();
panelTabCourrier.setBorder(new EtchedBorder(EtchedBorder.RAISED, null, null));
panelTabCourrier.setPreferredSize(new Dimension(widthTailleMoniteurDivisePar4 , hauteurTailleMoniteurDivisePar3));
panelBordelLayoutEast.add(panelTabCourrier, BorderLayout.CENTER);
panelTabCourrier.setLayout(new BorderLayout(0, 0));

JLabel lblCourrier = new JLabel("Courriers reçus :");
panelTabCourrier.add(lblCourrier, BorderLayout.NORTH);

JScrollPane scrollPaneTabCourrier = new JScrollPane();
scrollPaneTabCourrier.setViewportBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));
panelTabCourrier.add(scrollPaneTabCourrier, BorderLayout.CENTER);

Path datacourrier = Paths.get(System.getProperty("user.dir") + "/DOSSIERS /" + foNom +"/COURRIER/", "Courrier.txt") ;

modelTableCourrier tabCourrier = new modelTableCourrier(datacourrier);
scrollPaneTabCourrier.setViewportView(tabCourrier);


Je fais appel à une class :

public class modelTableCourrier extends JPanel {

Dimension tailleMoniteur2 = Toolkit.getDefaultToolkit().getScreenSize();
int longeurCell1 = tailleMoniteur2.width/4 ;
int hauteurCell1 = tailleMoniteur2.height/4 ;
int hauteurCell4 = tailleMoniteur2.height/7;

public modelTableCourrier(Path dataFilePath2) {

JTable table2; // le tableau
modelTable2 model2; // le modèle

// font
Font f = new Font("SanSerif", Font.PLAIN, 24);
setFont(f);
// positionnement
setLayout(new BorderLayout());
// construction du modèle de remplissage à partir du fichier
model2 = new modelTable2(dataFilePath2);
// création du tableau
table2 = new JTable();
table2.setModel(model2);
table2.createDefaultColumnsFromModel();

//dimension des colonnes
//fixer la largeur de la 1ere colonne à 100 pixels
TableColumn col = table2.getColumnModel().getColumn(0); //date
col.setPreferredWidth(90);
//fixer la largeur de la 2eme colonne
col = table2.getColumnModel().getColumn(1); //titre
//col.setPreferredWidth(150);
col.setPreferredWidth(longeurCell1-110);
//fixer la largeur de la 3eme colonne à 0 pixels
col = table2.getColumnModel().getColumn(2);
col.setMaxWidth(0);
col.setMinWidth(0);
col.setPreferredWidth(100);
table2.setAutoCreateRowSorter(true);
// scrollpane
JScrollPane scrollpane2 = new JScrollPane(table2);
add(scrollpane2);
}
public Dimension getPreferredSize() {
return new Dimension(longeurCell1-20, hauteurCell1);
}
private void setAutoResizeMode(int autoResizeOff) {
}
}


Enfin derniere class :

public class modelTable2 extends AbstractTableModel {
protected Vector data; // données
protected Vector columnNames; // noms de colonnes
protected Path datafile2;

public modelTable2(Path f2) {
datafile2 = f2;
initVectors();
}

public void initVectors() {
String ligne;
data = new Vector();
columnNames = new Vector();

// des noms de colonnes (1ère ligne)

for(int i = 0; i < 3; i++)//on place les titres

switch (i)
{
case 0:
columnNames.addElement("DATE"); ;
break;
case 1:
columnNames.addElement("TITRE");

break;
default:
columnNames.addElement("date envers");
}


Charset charset = Charset.forName("ISO-8859-1");

try {
List<String> lines = Files.readAllLines(datafile2, charset);
for (String line : lines) {
StringTokenizer st2 = new StringTokenizer(line,"\t");
while (st2.hasMoreTokens())
data.addElement(st2.nextToken());

}
} catch (IOException e) {
System.out.println(e);
}