jeudi 30 avril 2015

ListCellRenderer mit JLabel und MouseListener

Hallo,

da ich bei meiner Suche nicht fündig wurde, wende ich mich mal an euch:

Ich habe einen ListCellRenderer geschrieben, der mir Text und zwei Labels in einer Liste anzeigt. Die Labels sind jeweils mit ImageIcons gefüllt. Jetzt versuche ich, Ereignisse der Maus abzufangen, indem ich einen MouseListener auf das jeweilige Label setze. Komischerweise passiert dabei nichts. Hier mein Code:

Java Code:

  1. public class VorräteListCellRenderer extends JPanel implements ListCellRenderer {
  2.  
  3. @Override
  4. public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
  5.  
  6. this.removeAll();
  7. VorräteItem item = (VorräteItem) value;
  8.  
  9. JLabel text = new JLabel(item.getName() + " - " + item.getAnzahl());
  10. text.setFont(new Font(text.getFont().getName(), Font.BOLD, 24));
  11. this.add(text);
  12.  
  13. ImageIcon icon1 = new ImageIcon("./res/add.png");
  14. JLabel iconPlus = new JLabel();
  15. iconPlus.addMouseListener(new MouseAdapter() {
  16. public void mouseClicked(MouseEvent e) {
  17. System.out.println("Hallo");
  18. }
  19. });
  20. iconPlus.setIcon(icon1);
  21. iconPlus.setVisible(true);
  22. this.add(iconPlus);
  23.  
  24. ImageIcon icon2 = new ImageIcon("./res/bin.png");
  25. JLabel iconMinus = new JLabel();
  26. iconMinus.setIcon(icon2);
  27. this.add(iconMinus);
  28.  
  29. this.setOpaque(true);
  30.  
  31. if (isSelected) {
  32. text.setForeground(Color.RED);
  33. this.setBackground(Color.GRAY);
  34. } else {
  35. text.setForeground(Color.BLACK);
  36. this.setBackground(Color.WHITE);
  37. }
  38.  
  39. return this;
  40. }
  41.  
  42. }



Habt ihr vielleicht Ideen, warum dieses nicht funktioniert?


ListCellRenderer mit JLabel und MouseListener

0 commentaires:

Enregistrer un commentaire