Hi, I'm a signature virus. Put me in your signature to help me spread.
Alleen moet je dan bijvoorbeeld een button er aan hangen.
Je maakt dan een inner class met iets als
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
Tot slot roep je op je JLabel de functie addMouseListener() aan met je eigen gecreerde (en geïnstantieerde) listener.
En hoe hang je die actionlistener dan aan je JLabel? JLabel heeft namelijk geen addActionListener()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"); } }
[ 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
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
In wat voor opzicht werkt het niet zoals je zou willen?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.
"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.'
Nee, maar als men echt op het JLabel zelf moet klikken is er geen andere keus en het is niet echt lastig: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
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.
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) {} }); |
| 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
Heb je helemaal gelijk in, ik wist niet dat dat bestondsig69 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.
| 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
Dit is mijn code:
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.
'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'
Hi, I'm a signature virus. Put me in your signature to help me spread.
Nu wil ik, als ik klik op mijn Jlabel, de naam van de image printen.
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.Mr._Superior schreef op vrijdag 06 oktober 2006 @ 17:06:
ik krijg een symbol not Found error,
"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.'
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 geschrevenSimon schreef op vrijdag 06 oktober 2006 @ 17:35:
kun je niet zorgen dat je een button maakt en de 3d randen verbergt?
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