[JAVA] JLabel met event

Pagina: 1
Acties:
  • 110 views sinds 30-01-2008
  • Reageer

  • L01
  • Registratie: December 2003
  • Laatst online: 12-02 09:17
Ik heb een JLabel met daarin een image, dit wordt heel mooi weergegeven op mijn Jpanel.
Nu wil ik, als ik klik op mijn Jlabel, de naam van de image printen.

Nu ben ik bezig geweest met MouseListener maar dit werkt niet helemaal zoals ik het zou willen.

Nu weet ik niet of ik dit nu moet fixen met MouseListener of iets anders. Ik begreep dat ActionListener niet werkt met een Jlabel??

Wie o wie kan mij hier mee helpen?

Hi, I'm a signature virus. Put me in your signature to help me spread.


  • Haan
  • Registratie: Februari 2004
  • Laatst online: 12-02 19:04

Haan

dotnetter

ActionListener werkt prima met een JLabel hoor..
Alleen moet je dan bijvoorbeeld een button er aan hangen.
Je maakt dan een inner class met iets als

Java:
1
2
3
4
5
6
7
8
9
10
11
12
class ImageListener implements ActionListener
{

    public void actionPerformed(ActionEvent e)
    {
         ... //code die wat met je label doet
         System.out.println("naam_van_plaatje");
    }
}

ActionListener listener = new ImageListener();
imageButton.addActionListener(listener);

[ Voor 25% gewijzigd door Haan op 06-10-2006 00:01 . Reden: extra info toegevoegd;) ]

Kater? Eerst water, de rest komt later


  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 07:44
Zelf een Listener schrijven die MouseListener implementeert. Zorg dat je in de constuctor van je eigen listener een JLabel kunt meegeven om te kunnen updaten. Je kunt de meeste events leeglaten en mouseClicked implementeren, zodat die het JLabel update.

Tot slot roep je op je JLabel de functie addMouseListener() aan met je eigen gecreerde (en geïnstantieerde) listener.
Haan schreef op donderdag 05 oktober 2006 @ 23:48:
ActionListener werkt prima met een JLabel hoor.. en die moet je ook juist gebruiken ipv de MouseListener ;)
Je maakt dan een inner class met iets als

Java:
1
2
3
4
5
6
7
8
9
class ImageListener implements ActionListener
{

    public void actionPerformed(ActionEvent e)
    {
         ... //code die wat met je label doet
         System.out.println("naam_van_plaatje");
    }
}
En hoe hang je die actionlistener dan aan je JLabel? JLabel heeft namelijk geen addActionListener() ;).

[ Voor 42% gewijzigd door Jaap-Jan op 05-10-2006 23:53 ]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


  • Haan
  • Registratie: Februari 2004
  • Laatst online: 12-02 19:04

Haan

dotnetter

Ik was er even vergeten bij te melden dat je dan wel iets van een button nog moet maken ook, waar je die ActionListener wel aan kan toevoegen :P

In dit geval lijkt het me makkelijker, omdat het waarschijnlijk toch alleen om een muisklik gaat, dan hoef je niet nog 4 lege methodes aan te maken voor de MouseListener.

[ Voor 37% gewijzigd door Haan op 06-10-2006 00:05 ]

Kater? Eerst water, de rest komt later


  • MetroidPrime
  • Registratie: Oktober 2003
  • Laatst online: 25-01 09:16

MetroidPrime

Turn it up loud, captain!

Mr._Superior schreef op donderdag 05 oktober 2006 @ 23:41:
Ik heb een JLabel met daarin een image, dit wordt heel mooi weergegeven op mijn Jpanel.
Nu wil ik, als ik klik op mijn Jlabel, de naam van de image printen.

Nu ben ik bezig geweest met MouseListener maar dit werkt niet helemaal zoals ik het zou willen.
In wat voor opzicht werkt het niet zoals je zou willen?

"Some girl on the street outside the bar just asked me if I was saved yet." "Yeah? What did you say?" "I told her 'I saved at the checkpoint a couple of minutes back and I can reload from there if I die.'


  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 07:44
Haan schreef op donderdag 05 oktober 2006 @ 23:57:
Ik was er even vergeten bij te melden dat je dan wel iets van een button nog moet maken ook, waar je die ActionListener wel aan kan toevoegen :P

In dit geval lijkt het me makkelijker, omdat het waarschijnlijk toch alleen om een muisklik gaat, dan hoef je niet nog 4 lege methodes aan te maken voor de MouseListener.
Nee, maar als men echt op het JLabel zelf moet klikken is er geen andere keus en het is niet echt lastig:
Java:
1
2
3
4
5
6
7
8
9
10
    label.addMouseListener(new MouseListener() {

        public void mousePressed(MouseEvent e) {
            updateLabel();
        }
        public void mouseClicked(MouseEvent e) {}
        public void mouseReleased(MouseEvent e) {}
        public void mouseEntered(MouseEvent e) {}
        public void mouseExited(MouseEvent e) {}
   });
Wat in updateLabel() moet staan lijkt me duidelijk ;).

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 14:00
Een MouseAdapter vind ik persoonlijk netter, dan zit je niet met 4 lege methodes in je code. Het doet precies hetzelfde, dat weet ik, maar het toont gewoon wat netter.

Roomba E5 te koop


  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 07:44
sig69 schreef op vrijdag 06 oktober 2006 @ 09:01:
Een MouseAdapter vind ik persoonlijk netter, dan zit je niet met 4 lege methodes in je code. Het doet precies hetzelfde, dat weet ik, maar het toont gewoon wat netter.
Heb je helemaal gelijk in, ik wist niet dat dat bestond :P. Dit zou dan ook mijn persoonlijke favoriet zijn.

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


  • L01
  • Registratie: December 2003
  • Laatst online: 12-02 09:17
Ik heb geprobeerd om te manier van Japie_17 te gebruiken maar dat werkt niet helemaal.

Dit is mijn code:
Java:
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
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.*;


public class Label extends JFrame {
    
    /** Creates a new instance of Label */
    public Label() {
    }
    
    public static void main(String[] args){
        //maak een container
        JFrame frame = new JFrame();
        java.awt.Container container = frame.getContentPane();
        container.setLayout(new BorderLayout());
        
        // maak in het midden van de container een Panel
        JPanel midden = new JPanel(new FlowLayout());
        
        JLabel label = new JLabel(new ImageIcon("image/wallpapergirl.jpg"));
        
        label.addMouseListener(new MouseListener() {
            
            public void mousePressed(MouseEvent e) {
                
                // hier krijg ik een error op : symbol not found
                //updateLabel();
                
            }
            public void mouseClicked(MouseEvent e) {}
            public void mouseReleased(MouseEvent e) {}
            public void mouseEntered(MouseEvent e) {}
            public void mouseExited(MouseEvent e) {}
        });


        midden.add(label);
        container.add(midden);
        
        frame.setSize(700,500);
        frame.setVisible(true);
        frame.setTitle("test");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        //panel in midden van het scherm zetten
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        
        int screenWidth     = screenSize.width;
        int screenHeight    = screenSize.height;
        
        int x = (screenWidth - frame.getWidth()) /2;
        int y = (screenHeight -frame.getHeight()) /2;
        frame.setLocation(x, y);


    }
}


in het commentaar heb ik even neergezet waar ik een error krijg, en eerlijk gezegd is mij ook niet helemaal duidelijk wat er in updateLabel(); zou moeten staan.

Hi, I'm a signature virus. Put me in your signature to help me spread.


  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 11-02 01:24

Nick_S

++?????++ Out of Cheese Error

Welke error krijg je en wat doet updateLabel()?

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'


  • L01
  • Registratie: December 2003
  • Laatst online: 12-02 09:17
ik krijg een symbol not Found error,

Hi, I'm a signature virus. Put me in your signature to help me spread.


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 14:00
updateLabel moet je natuurlijk zlef even maken, om de actie uit te voeren die er moet gebeuren als je klikt:
Nu wil ik, als ik klik op mijn Jlabel, de naam van de image printen.

Roomba E5 te koop


  • MetroidPrime
  • Registratie: Oktober 2003
  • Laatst online: 25-01 09:16

MetroidPrime

Turn it up loud, captain!

Mr._Superior schreef op vrijdag 06 oktober 2006 @ 17:06:
ik krijg een symbol not Found error,
Waarschijnlijk heb je geen updateLabel() methode in je class? Je moet die regel vervangen door de code die je wilt gebruiken om de naam weer te geven.

"Some girl on the street outside the bar just asked me if I was saved yet." "Yeah? What did you say?" "I told her 'I saved at the checkpoint a couple of minutes back and I can reload from there if I die.'


  • simon
  • Registratie: Maart 2002
  • Laatst online: 14:21
kun je niet zorgen dat je een button maakt en de 3d randen verbergt?

|>


  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 07:44
updateLabel is een zelfgeschreven method ;). Je moet zelf nog de code bedenken om te wisselen tussen de tekst en het plaatje :).
Simon schreef op vrijdag 06 oktober 2006 @ 17:35:
kun je niet zorgen dat je een button maakt en de 3d randen verbergt?
Dan nog moet je in je actionlistener een manier hebben om de tekst te updaten. Ik weet dat het MouseEvent werkt, want ik heb gisteren snel een programmaatje voor geschreven :).

JLabelChange sourcefile
JLabelChange.jar

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett

Pagina: 1