Une JList de JPanel [Résolu]

frater_sinister 4 Messages postés dimanche 18 janvier 2004Date d'inscription 4 janvier 2007 Dernière intervention - 4 janv. 2007 à 11:29 - Dernière réponse : frater_sinister 4 Messages postés dimanche 18 janvier 2004Date d'inscription 4 janvier 2007 Dernière intervention
- 4 janv. 2007 à 15:46
Bonjour,

J'ai un petit soucis avec les Jlist. J'arriver a les manipuler avec des elements String mais pas avec des éléments JPanel. Mon code source:

import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.util.Vector;
import java.awt.*;

public class PartitionPanel extends JPanel implements ListSelectionListener
{

/**
*
*/
private static final long serialVersionUID = 5644880888990624676L;
public static JList partochs;
public JScrollPane scrollPane;
public Vector listeItems;

public PartitionPanel()
{
listeItems = new Vector();
listeItems.addElement(new JPanel());
listeItems.addElement(new JPanel());

setLayout(new BorderLayout());

partochs = new JList(listeItems);
partochs.setSelectedIndex(0);
partochs.addListSelectionListener(this);

scrollPane = new JScrollPane(partochs);
add(scrollPane, BorderLayout.CENTER);
}

public void valueChanged(ListSelectionEvent e)
{
// TODO Auto-generated method stub

}
}

Lorsque je compile et excute code, le JScrollPäne s affiche mais j'ai des lignes d'erreurs qui apparaissent pour chaque JPanel de ma JList.
Erreur: "javax.swing.JPanel[,0,0,0x0,invalid,layout=java.awt.FlowLayout,alignmentX..."

Merci pour vos réponses :)
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
indiana_jules 750 Messages postés mardi 9 mars 2004Date d'inscription 23 décembre 2008 Dernière intervention - 4 janv. 2007 à 12:38
3
Merci
Salut,
j'avais fait la m^me chose, mais avec des JLabel, JCheckBox. Il faut bien penser à définir un renderer particulier.
Par exemple:
private class JChekBoxListRenderer extends JCheckBox implements ListCellRenderer {
        //Constante de sérialisation
        private static final long serialVersionUID = 1L;
       
        /* (non-Javadoc)
         * @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
         */
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
            setForeground(list.getForeground());
            setBackground(list.getBackground());
            setSelected(((JCheckBox)value).isSelected());
            setText(((JCheckBox)value).getText());
            return this;
        }       
    }

et pour ta liste, tu fais : setCellRenderer(new JChekBoxListRenderer());

Voilà ^^

le monde a des idées : la preuve, c'est qu'il y en a de mauvaises
ne comprends pas tout, mais je parle de tout : c'est ce qui compte

Merci indiana_jules 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de indiana_jules
Meilleure réponse
frater_sinister 4 Messages postés dimanche 18 janvier 2004Date d'inscription 4 janvier 2007 Dernière intervention - 4 janv. 2007 à 15:46
3
Merci
OK c'est bon j'ai trouvé, je poste mon code final:

package musica;

import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.util.Vector;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class PartitionPanel extends JPanel implements ListSelectionListener, MouseListener
{
   
    private static final long serialVersionUID = 5644880888990624676L;
    public static JList partochs;
    public JScrollPane scrollPane;
    public Vector<FeuillePartition> listeItems;
   
    public PartitionPanel()
    {
        super(new BorderLayout());
       
        listeItems = new Vector<FeuillePartition>();
        listeItems.addElement(new FeuillePartition());
        //listeItems.addElement(new FeuillePartition());
       
        partochs = new JList(listeItems);
        partochs.setSelectedIndex(0);
       
        JListRenderer renderer = new JListRenderer();
        partochs.setCellRenderer(renderer);
        partochs.addMouseListener(this);

        partochs.addListSelectionListener(this);

        scrollPane = new JScrollPane(partochs);
       
        add(scrollPane, BorderLayout.CENTER);

    }

    public void valueChanged(ListSelectionEvent e)
    {
       
    }

    public void mouseClicked(MouseEvent arg0) {
        // TODO Auto-generated method stub
       
    }

    public void mouseEntered(MouseEvent arg0) {
        // TODO Auto-generated method stub
       
    }

    public void mouseExited(MouseEvent arg0) {
        // TODO Auto-generated method stub
       
    }

    public void mousePressed(MouseEvent e)
    {
        ((FeuillePartition)partochs.getSelectedValue()).mousePressed(e);
    }

    public void mouseReleased(MouseEvent arg0) {
        // TODO Auto-generated method stub
       
    }
}

class JListRenderer implements ListCellRenderer
{
   
    public Component component;
   
    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
    {       
        component = (Component)value;
        if(isSelected)
        {

        }
        return component;
    }
}

Merci frater_sinister 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de frater_sinister
frater_sinister 4 Messages postés dimanche 18 janvier 2004Date d'inscription 4 janvier 2007 Dernière intervention - 4 janv. 2007 à 15:36
1
Merci
Merci pour le coup de main, mes FeuillePartition (JPanel) s'affichent!!
Je poste mon code source pour les autres qui galèrent la dessus:

import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.util.Vector;
import java.awt.*;

public class PartitionPanel extends JPanel implements ListSelectionListener
{
   
    public static JList partochs;
    public JScrollPane scrollPane;
    public Vector<FeuillePartition> listeItems;
   
    public PartitionPanel()
    {
        super(new BorderLayout());
       
        listeItems = new Vector<FeuillePartition>();
        listeItems.addElement(new FeuillePartition());
        //listeItems.addElement(new FeuillePartition());
       
        partochs = new JList(listeItems);
        partochs.setSelectedIndex(0);
       
        JListRenderer renderer = new JListRenderer();
        partochs.setCellRenderer(renderer);

        partochs.addListSelectionListener(this);

        scrollPane = new JScrollPane(partochs);
       
        add(scrollPane, BorderLayout.CENTER);

    }

    public void valueChanged(ListSelectionEvent e)
    {
       
    }
}

class JListRenderer implements ListCellRenderer
{
   
    public Component component;
   
    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
    {       
        component = (Component)value;
        if(isSelected)
        {

        }
        return component;
    }
}

Il me reste un dernier soucis, chaque FeuillePartition implement les Listener MouseListener, MouseMotionListener.
Or depuis que c'est dans une JList ca ne fonctionne plus
Commenter la réponse de frater_sinister

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.