Une JList de JPanel [Résolu]

Messages postés
4
Date d'inscription
dimanche 18 janvier 2004
Dernière intervention
4 janvier 2007
- - Dernière réponse : frater_sinister
Messages postés
4
Date d'inscription
dimanche 18 janvier 2004
Dernière intervention
4 janvier 2007
- 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
Messages postés
750
Date d'inscription
mardi 9 mars 2004
Dernière intervention
23 décembre 2008
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

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 105 internautes ce mois-ci

Commenter la réponse de indiana_jules
Messages postés
4
Date d'inscription
dimanche 18 janvier 2004
Dernière intervention
4 janvier 2007
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

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 105 internautes ce mois-ci

Commenter la réponse de frater_sinister
Messages postés
4
Date d'inscription
dimanche 18 janvier 2004
Dernière intervention
4 janvier 2007
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.