IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Agents de placement/Fenêtres Java Discussion :

JList + JPopupMenu


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1
    Par défaut JList + JPopupMenu
    Bonsoir à tous.

    J'ai plusieurs problèmes dans mon appli et je fais donc appel à votre aide.

    le but étant de pouvoir rajouter/supprimerdes panels.
    Sachant que chaque panel contient des histogrammes.

    exemple voir screen: les histogramme sont remplacer par des pingouin.
    chaque ligne de pingouin correspond à un panel.
    Lorsque je clique sur le bouton, il m'ajoute un panel. Un panel peut avoir un nombre variable d'histogrammes.


    - 1erement: je souhaiterais pouvoir supprimer un panel avec l'aide du clique droit. Or le problème est que je n'arrive pas à mettre la main sur le panel à supprimer.
    -2emement: dans le listCellRenderer je retourne (return (JPanel)value avec un cast pour pouvoir afficher mes pingouin mais à cause de ca je peux plus selectionner dans la JList. Ma question est: Est-ce la bonne méthode pour faire afficher mes panels d' histogrammes dans la JList?


    Bon voila un peu de code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    package test2;
     
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.Point;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.BoxLayout;
    import javax.swing.DefaultListModel;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JList;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;
    import javax.swing.JPopupMenu;
    import javax.swing.JScrollPane;
    import javax.swing.ListCellRenderer;
     
     
    public class AddPanel extends JPanel {
     
    	private static int cpt = 0;
     
     
    	public AddPanel(int index){
    		super();
     
    		BoxLayout box = new BoxLayout(this, BoxLayout.X_AXIS);
    		setLayout(box);
     
    		for(int i=0; i<index; i++){
    			JLabel label = new JLabel(Integer.valueOf(i).toString(), 
    					new ImageIcon(AddPanel.class.getResource("pic3.png")), JLabel.CENTER);
    			add(label);
    		}
    	}	
     
    	public static void main(String[] args){
    		JFrame frame = new JFrame("Test");
     
    		frame.setSize(800, 600);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setLocationRelativeTo(null);
     
    		final JPanel panel = new JPanel(new BorderLayout());
    		frame.setContentPane(panel);
     
    		final JButton btn = new JButton("Add Panel");
     
    		final DefaultListModel model = new DefaultListModel();
    		final JList list = new JList(model);
    		final JScrollPane scroll = new JScrollPane(list);
     
     
    		final JMenuItem item = new JMenuItem("remove");
    		item.addActionListener(new ActionListener(){
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				Point p = item.getMousePosition();
    				Component comp = panel.getComponentAt(p);
    				if(comp!=null)
    					list.remove(comp);
    			}
    		});
    		JPopupMenu popup = new JPopupMenu("pop");
    		popup.add(item);
    		list.setComponentPopupMenu(popup);
     
    		list.setCellRenderer(new ListCellRenderer(){
     
    			@Override
    			public Component getListCellRendererComponent(JList list,
    					Object value, int index, boolean isSelected,
    					boolean cellHasFocus) {
    				return (JPanel)value;
    			}
     
    		});
    		btn.addActionListener(new ActionListener(){
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				AddPanel addPanel = new AddPanel(cpt);
    				model.addElement(addPanel);
    				cpt++;
    			}
    		});
     
     
    		panel.add(btn, BorderLayout.NORTH);
    		panel.add(scroll, BorderLayout.CENTER);
    		frame.setVisible(true);
    	}
    }

    Sinon j'avais aussi essayer de faire autrement: c'est à dire au lieu d'utiliser une JList, je met plutôt un JPanel (avec une BoxLayout-Y_AXIS) dans le ScrollPane. Cependant je ne comprend pas pourquoi quand j'insère les panels, je ne voit rien.
    Est un probleme de setSize? ou quelque chose comme ca?


    voila le code que je met à la place de la JList.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    		final JPanel viewPanel = new JPanel();
    		final BoxLayout box = new BoxLayout(viewPanel, BoxLayout.Y_AXIS);
    		viewPanel.setLayout(box);
    		JScrollPane scroll = new JScrollPane(viewPanel);

    Merci d'avance pour tout l'aide apporter
    Images attachées Images attachées  

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 171
    Par défaut
    pour ta premier question vous devez surcharger la methode getcellEditor(...paramettre...) et la deuxieme getcellRender(...paramettre...) je pense,
    car j'avez presque le même probleme que vous, sauf que moi j'avez un JTable qui contient des comboBox et a l'aide de c'est surcharge j'est pus resoudre le problem.

Discussions similaires

  1. JPopupMenu et JList
    Par DiverSIG dans le forum Débuter
    Réponses: 5
    Dernier message: 31/03/2009, 13h33
  2. Réponses: 10
    Dernier message: 12/09/2008, 12h21
  3. JList & JPopupMenu
    Par Sylver--- dans le forum Composants
    Réponses: 2
    Dernier message: 15/05/2007, 12h33
  4. [Jlist] Clic sur jlist
    Par bibx dans le forum Composants
    Réponses: 6
    Dernier message: 07/05/2004, 10h19
  5. JList en line wrapping
    Par dreydrey dans le forum Composants
    Réponses: 3
    Dernier message: 16/12/2003, 11h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo