Remplir une jlist

koukou9018 -  
 Elmuchacho99 -
Bonjour,
je veut remplir une jlist avec le contenu d'un fichier lors du clic sur un bouton "importer"
j'ai essayer avec ce code mais j'ai pas arriver à trouver l'instruction dans la boucle while qui remplir la jlist à partir du fichier

private void jButtonImport(ActionEvent e)
{
String fi = "resultat.txt";
try
{
InputStream ips=new FileInputStream(fi);
InputStreamReader ipsr=new InputStreamReader(ips);
BufferedReader br=new BufferedReader(ipsr);
String ligne;
while ((ligne=br.readLine())!=null){

}
br.close();
}
catch (Exception err){
System.out.println(err.toString());
}

}

1 réponse

KX Messages postés 19031 Statut Modérateur 3 020
 
Déjà, tu peux simplifier la lecture de ton fichier avec la classe Scanner. Ensuite, pour pouvoir accéder aux données, il faut appeler le ListModel, qui sera en général un DefaultListModel.

protected final JList list;

public Constructeur()
{
    list = new JList(new DefaultListModel<String>());
}

String fi = "resultat.txt"; 

private void jButtonImport(ActionEvent e) 
{
    DefaultListModel<String> model = (DefaultListModel<String>) list.getModel();
    Scanner sc = new Scanner(fi);
    while (sc.hasNextLine())
        model.add(sc.nextLine());
    sc.close();
    list.setModel(model);
}
0
koukou9018
 
ça marche pas j'ai essayé avec cette solution mais ça marche pas est ce que il y a une autre solution en utilisant un vecteur ou un tableau
0
KX Messages postés 19031 Statut Modérateur 3 020
 
À quoi il te servirait ton vecteur ou ton tableau ?
Ici tu passes directement du fichier à la JList, pas besoin d'autre chose.
Cependant, j'avoue que je n'avais pas vérifié le code et qu'il y avait quelques erreurs, mais le principe était quand même bon ! Voici un exemple complet :

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;

public class Test extends JFrame
{
	private static final long serialVersionUID = 1L;
	
	protected final JList list;
	protected final JButton button;

	public Test()
	{
		setSize(500,500);
		setLayout(new FlowLayout());
		
		list = new JList(new DefaultListModel());
		add(list);
	    
		button = new JButton("remplir");
		button.addActionListener(new ActionListener() 
		{
			@Override
			public void actionPerformed(ActionEvent e) 
			{
				try 
				{
					jButtonImport(e);
				} 
				catch (FileNotFoundException e1) 
				{
					e1.printStackTrace();
				}
			}
		});
		add(button);
	    
		setVisible(true);
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
	}
	
	String fi = "/home/KX/Bureau/data.txt"; 
	
	private void jButtonImport(ActionEvent e) throws FileNotFoundException 
	{
		DefaultListModel model = (DefaultListModel) list.getModel();
	    
		Scanner sc = new Scanner(new File(fi));
		while (sc.hasNextLine())
			model.addElement(sc.nextLine());
	    
		sc.close();
	    
		list.setModel(model);
	}
	
	public static void main(String...args)
	{
		new Test();
	}
}
0
koukou9018
 
il m'affiche cet erreur " java.lang.ClassCastException: javax.swing.JList$3" quand je clic sur l'erreur il m'affiche une fenétre avec le titre "properties for java.lang.ClassCastException"
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Avec ce code ? Sur quelle ligne ?
PS. Il fallait bien sûr changer String fi, pour correspondre à ton fichier.
0
Elmuchacho99
 
merci beaucoup pour les infos,, sa m'as sorti d'une impasse qui dure depuis 2 jours, j'allai jeter l'ordi par la fenêtre.. lol
0