Jlist en java et selection

Fermé
sandrine - 15 déc. 2003 à 13:33
 Utilisateur anonyme - 15 déc. 2003 à 14:12
Bonjour a tous, j'ai un problème en java. Je souhaite ajouter un jlist dan smon interface graphique en java, juske la tout va bien. Je peux selectionner les éléments de la liste en cliquant dessus.

Le problème c'est ke j'ai voulu ajouter des images en fonction des items, ca marche mais je ne peux pas selectionner un item de la liste avec la souris, en tout cas quand je cliques sur un item de la liste, il n'apparait pas kom étant sélectionné.

Voilà, si qqn a la réponse à mon pb, merci

Voila mon code :

import java.io.*;
import java.util.*;
import java.awt.*; // Affichage seul
import java.awt.event.*; // Affichage + événement
import javax.swing.*;
import javax.swing.event.*;
import java.lang.*;



public class ListeFic
{
private Vector list;
protected JList jlist;

public ListeFic()
{
list = new Vector();
list = initList();
jlist = new JList(list);
//jlist.setCellRenderer(new MyCellRenderer());

jlist.addMouseListener(new EcouteurListApp(this));

Frame myFrame;
myFrame = new Frame("Liste de fichiers");
myFrame.setSize(800, 600);
myFrame.add(jlist);

myFrame.setVisible(true); // Pour le rendre visible
myFrame.validate(); // Pour dire kon a finit

}

public Vector initList()
{
// on ouvre le fichier login en lecture

// FileReader fichier = new FileReader("login.txt");
// StreamTokenizer entree = new StreamTokenizer(fichier);

try
{
FileInputStream ips = new FileInputStream("login.txt");
InputStreamReader ipsr = new InputStreamReader(ips);
BufferedReader br = new BufferedReader(ipsr);
String ligne;

int i=0;

while ((ligne = br.readLine())!=null)
{
// lecture du 4ème champs du fichier
StringTokenizer st = new StringTokenizer(ligne,"\t");

String ch1 = st.nextToken();
String ch2 = st.nextToken();
String ch3 = st.nextToken();
String ch4 = st.nextToken();

if(ch4.equals("connect")) // si ce champs est à connect on récupère le login
{
list.add(i,ch1);
}
i++;

}// fin while

System.out.println("liste des gens connected :");

for(i=0;i<list.size();i++)
System.out.println(list.elementAt(i));

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

return list;
}

public static void main(String args[])
{
ListeFic l1 = new ListeFic();

System.out.println("\nFin du programme");
}
}

// Display an icon and a string for each object in the list.


class MyCellRenderer extends JLabel implements ListCellRenderer
{
final static ImageIcon longIcon = new ImageIcon("gdbouton.gif");
final static ImageIcon shortIcon = new ImageIcon("ptbouton.gif");

// This is the only method defined by ListCellRenderer.
// We just reconfigure the JLabel each time we're called.

public Component getListCellRendererComponent(
JList list,
Object value, // value to display
int index, // cell index
boolean isSelected, // is the cell selected
boolean cellHasFocus) // the list and the cell have the focus
{
String s = value.toString();
setText(s);
setIcon((s.length() > 10) ? longIcon : shortIcon);
if (isSelected)
{
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
}
else
{
setBackground(list.getBackground());
setForeground(list.getForeground());
}
//setEnabled(list.isEnabled());
setFont(list.getFont());
return this;
}
}

class EcouteurListApp extends MouseAdapter
{
ListeFic lf;

public EcouteurListApp(ListeFic plf)
{
lf = plf;
}

public void mouseEntered(MouseEvent e)
{
if (e.getClickCount() == 2)
{
int index = lf.jlist.locationToIndex(e.getPoint());
System.out.println("Double clicked on Item " + index);
}
}

public void mouseClicked(MouseEvent e)
{
if (e.getClickCount() == 2)
{
int index = lf.jlist.locationToIndex(e.getPoint());
System.out.println("Double clicked on Item " + index);
}
}
};
A voir également:

1 réponse

Utilisateur anonyme
15 déc. 2003 à 14:12
Bonjour,
est-ce qu'il ne vaudrait pas mieux implémenter un ListSelectionListener plutot qu'un MouseListener?
0