Charger text dans JTable [Résolu]

Messages postés
45
Date d'inscription
vendredi 23 mars 2018
Dernière intervention
18 janvier 2019
- - Dernière réponse : azerty_qwerty
Messages postés
45
Date d'inscription
vendredi 23 mars 2018
Dernière intervention
18 janvier 2019
- 18 janv. 2019 à 00:50
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
Afficher la suite 

Votre réponse

1 réponse

Messages postés
45
Date d'inscription
vendredi 23 mars 2018
Dernière intervention
18 janvier 2019
0
Merci
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);
}
Commenter la réponse de azerty_qwerty

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.