ActionListener auf BufferedImage

Status
Nicht offen für weitere Antworten.

---

Aktives Mitglied
Hallo,

ich habe vergebens versucht einen ActionListener einem BufferedImage hinzuzufügen.
Ziel ist, dass bei Click auf das image ein frame mit einer Textarea aufpoppt.

Image anlegen ist OK
Code:
try {
        	 
           backgr = ImageIO.read(new File("xxx.jpg"));
   
           }
           catch(IOException e)
              {
              System.err.println(e.getMessage());
               }

Jetzt weis ich nicht, wie ich den Listener dem image zuweise

Code:
 bar.addActionListener(new ActionListener() { 
              public void actionPerformed(ActionEvent evt) { 
                  jMenuItem1ActionPerformed(evt); 
              } 
          });

Das liefert folgenden Fehler:
- The method addActionListener(new ActionListener(){}) is undefined for the type
BufferedImage
Muss ich einen eigenen Listener für das image schreiben?

Hoffe auf Hilfe, danke!
 

---

Aktives Mitglied
Wie wähle ich eine bestimmte Componente aus? Der Listener ist ja jetzt nicht auf dem Image, sondern eine Componente höher auf JFrame f.

Bei einem Button wärs
Code:
if (e.getButton() == MouseEvent.BUTTON)

das geht fürs image ja nicht:

Code:
f.addMouseListener(new MouseAdapter(){
              public void mouseClicked(MouseEvent e) { 
                 if (e.getComponent () == MouseEvent.)  //???
                 { 
                    System.out.println("2DFSRF"); 
                 } 

              }


ich steh aufm Schlauch..
 

---

Aktives Mitglied
Danke für Antwort!

hier ist der code:
(Keylistener ist ne Klasse um das image zu verschieben, hat nix mit meinem Probl. zu tun)

Code:
class Test extends JPanel
{
   BufferedImage bar;
  static BufferedImage backgr;
  
   static JFrame f;

    public Test ()
    {
       setPreferredSize(new Dimension(800, 574));
        try {
 
           backgr = ImageIO.read(new File("schedule.jpg"));
   
           }
           catch(IOException e)
              {
              System.err.println(e.getMessage());
               }
           f.addMouseListener(new MouseAdapter(){
              public void mouseClicked(MouseEvent e) { 
                 if (e.)  //??
                 { 
                 //   System.out.println("In Listerner"); 
                 } 

              }
           }
       );
           
           
           
 /*          bar.addActionListener(new ActionListener() { 
              public void actionPerformed(ActionEvent evt) { 
                  jMenuItem1ActionPerformed(evt); 
              } 
          }); 

    } */


    }

    public void paint(Graphics g) {
        super.paint(g);
        
        g.drawImage(backgr, 230, 80, this);


     }
   
    public static void main( String args[] ) {
    f = new JFrame();
        f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
      f.setSize ( 800, 574 );
        JPanel p = new JPanel();       
        BorderLayout layout = new BorderLayout();
      
        p.setLayout ( layout );
        p.add ( new test() );
       
        p.setVisible( true );
        p.addKeyListener(new Keyboard());
        p.setFocusable ( true );
        
        f.getContentPane().add ( p );
        f.setVisible( true );

    
        }
 

MarcoBehnke

Bekanntes Mitglied
hm... erstmal fällt mir auf, dass du in Deiner Main Methode Deine Klasse Test gar nicht verwendest?

statt f.addMouseListener() musst Du dann this.addMouseListener() verwenden und dann in der mouseClicked() f.show() aufrufen.
 

---

Aktives Mitglied
-hm... erstmal fällt mir auf, dass du in Deiner Main Methode Deine Klasse Test gar nicht verwendest?

Ich dachte, da ich keine Methoden aus Test verwende brauche ich das nicht. Das Panel erzeuge ich ja auch in main.
Also, so wie der code war hat er ohne listener funktioniert.

-statt f.addMouseListener() musst Du dann this.addMouseListener() verwenden und dann in der mouseClicked() f.show() aufrufen.
Sorry, aber wo ist der Unterschied zwischen f.add und this? Hinter dem this steckt doch f oder verstehe das falsch?

also hier ist mein neuer code +anderer ListenerKlasse:
Code:
class Test extends JPanel
{
   BufferedImage bar;
  static BufferedImage backgr;
  
   static JFrame f;

    public Test()
    {
       setPreferredSize(new Dimension(800, 574));
        try {
 //       	if (offImage != null)
 //               g.drawImage(offImage, 0, 0, this); 
        	bar = ImageIO.read(new File("client.png"));
           System.out.println(new File("client.png").exists()); 
           backgr = ImageIO.read(new File("schedule.jpg"));
   
           }
           catch(IOException e)
              {
              System.err.println(e.getMessage());
               }
           this.addMouseListener(new MouseAdapter(){
              public void mouseClicked(MouseEvent e) { 
                 f.show();
                 if (e.getButton() == MouseEvent.BUTTON3) 
                 { 
                 //   System.out.println("2DFSRF); 
                 } 

              }
           }
       );
        
           
      }

    public void paint(Graphics g) {
        super.paint(g);
        g.drawImage(backgr, 230, 80, this);
        g.drawImage(bar, p1x, p1y, this);
 
        System.out.println("ZEICHNE! "+p1x);
        
     }
   
    public static void main( String args[] ) {
    Test t = new Test();
    f = new JFrame();
        f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
      f.setSize ( 800, 574 );
        JPanel p = new JPanel();       
        BorderLayout layout = new BorderLayout();
      
        p.setLayout ( layout );
        p.add ( new Test() );
       
        p.setVisible( true );
        p.addKeyListener(new Keyboard());
        p.setFocusable ( true );
        
        f.getContentPane().add ( p );
        f.setVisible( true );
     //   f.addKeyListener(new Keyboard());
 //       f.repaint();
    
        }
   

    public static int p1x = 230;
    public static int p1y = 80;
    
}

Code:
public class Keyboard implements KeyListener {   
   
   String aktion="nix";


public void keyTyped(KeyEvent e) {}
   
public void keyReleased(KeyEvent e){}

public void keyPressed(KeyEvent e) {
   int pressed=e.getKeyCode();

   if (e.getKeyCode() == KeyEvent.VK_RIGHT) 
   {
      aktion = "Oben";
      Test.p1x = Test.p1x + 5;
      System.out.println("WERT X-ACHSE: "+Test.p1x);

      Test.f.repaint();
   }
   if (e.getKeyCode() == KeyEvent.VK_LEFT)//40)
   {
      aktion = "Unten";
      Test.p1x = Test.p1x - 5;
      System.out.println("WERT X-ACHSE: "+Test.p1x);
      Test.f.repaint();
      
   }
   
   if (e.getKeyCode() == KeyEvent.VK_DOWN) 
   {
      aktion = "Oben";
      Test.p1y = Test.p1y + 5;
      System.out.println("WERT y-ACHSE: "+Test.p1y);

      Test.f.repaint();
   }
   if (e.getKeyCode() == KeyEvent.VK_UP)
   {
      aktion = "Unten";
      Test.p1y = Test.p1y - 5;
      System.out.println("WERT y-ACHSE: "+Test.p1y);
      Test.f.repaint();
      
   }
   
  
}

}

vielen Dank!
 

MarcoBehnke

Bekanntes Mitglied
wenn ich dich richtig verstanden habe, dass ist JFRame f das Fenster was Du bei Klick öffnen möchtest. Deshalb macht es keinen Sinn einen Listener darauf zu legen, weil da ja möchtest, dass dieser das Fenster öffnet.

Also muss der Listener auf die Komponente, die das Bild enthält, das ist Test extends JPanel, also this
 

---

Aktives Mitglied
Sorry, soweit bin ich noch gar nicht.
Das Image liegt auf dem JFrame f. Bis jetzt versuche ich nur, dass überhaupt was passiert. Wenn ich auf das image klicke, soll einfach nur was ausgegeben werden, mit System.out.println.

Bis jetzt erscheint die Ausgabe, egal wo ich auf den Frame klicke.

Code:
 this.addMouseListener(new MouseAdapter(){
              public void mouseClicked(MouseEvent e) { 
                 f.show();
                System.out.println("2DFSRF); 
                 }
           }
       );
Aber ich möchte ja nur bei Klick auf das Image(nur wenige Pixel gross) das Ereignis Click abfangen.

this.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) {
f.show(); //??
if (e.getButton() == MouseEvent.BUTTON3) //hier statt Button mein Image
{
System.out.println("2DFSRF);
}

}
}
);

Kannst Du mir da weiterhelfen, ich hoffe ich hab mich jetzt verständlicher ausgedrückt.
 

MarcoBehnke

Bekanntes Mitglied
ja, aus dem MouseEvent musst due die Koordinaten des Klicks auslesen und schauen, ob der Klick in den Koordinaten des Bildes liegt.
 

---

Aktives Mitglied
die Koordinaten des Klicks sind einfach zu ermitteln. Beim image weis ich nicht wie, ich will ja nicht die Koordinaten, sondern die Zeichenfläche. Es wäre ja Zufall, wenn ich pixelgenau das image treffen würde.

mein Versuch, würde ja nur funktionieren, wenn ich genau auf die Koordinaten klicke

Code:
 (e.getX () == bar.getMinX () || e.getY () == bar.getMinY ())

Hast Du ne Idee? Ein Array mit Koordinaten der Vertices und dann schaun, ob der Klick in diesem Wertebereich liegt?
Oder gehts auch einfacher?

Nochmals vielen Dank!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Button ActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
H Viele ActionListener (MouseListener) - Performance AWT, Swing, JavaFX & SWT 24
pkm MainFrame durch Actionlistener auffrischen, aber wie? AWT, Swing, JavaFX & SWT 2
L actionListener für Button AWT, Swing, JavaFX & SWT 97
R Actionlistener funktioniert nicht AWT, Swing, JavaFX & SWT 4
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
R ActionListener in Actionlistener AWT, Swing, JavaFX & SWT 6
S Swing Variable in Actionlistener aufrufen AWT, Swing, JavaFX & SWT 10
P Swing ActionListener überschreibt einen Wert aus der Hauptklasse nicht AWT, Swing, JavaFX & SWT 5
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
M AWT Kann meinen Fehler beim ActionListener nicht finden AWT, Swing, JavaFX & SWT 5
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 3
L Ein Actionlistener für ein Textfeld, anstatt viele Actionlistener für ein Textfeld AWT, Swing, JavaFX & SWT 7
coolian ActionListener funktonirt nicht richtig auf JMenuItem AWT, Swing, JavaFX & SWT 4
L ActionListener zu Button in Panel hinzufügen AWT, Swing, JavaFX & SWT 10
R Kann JLabel in ActionListener nicht aufrufen AWT, Swing, JavaFX & SWT 4
Blender3D einzelner ActionListener vs anonyme ActionListener AWT, Swing, JavaFX & SWT 10
T Swing Änderung des ActionListener Events nach Klick auf JButton AWT, Swing, JavaFX & SWT 2
xYurisha ActionListener Methoden Buttons zuweisen! AWT, Swing, JavaFX & SWT 16
J ActionListener bei Buttons AWT, Swing, JavaFX & SWT 14
S Swing Problem mit Button und ActionListener AWT, Swing, JavaFX & SWT 5
it_is_all ActionListener umlenken/ updaten mit AddActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 3
it_is_all Event Handling ActionListener in anderer Klasse klappt nicht AWT, Swing, JavaFX & SWT 4
F "ActionListener" funktioniert nicht AWT, Swing, JavaFX & SWT 4
Z ActionListener Variable übergeben AWT, Swing, JavaFX & SWT 12
T JProgressbar während actionListener updaten AWT, Swing, JavaFX & SWT 1
S While Schleife im Actionlistener AWT, Swing, JavaFX & SWT 1
S ActionListener für alle Buttons AWT, Swing, JavaFX & SWT 26
R Swing ActionListener bei JButton AWT, Swing, JavaFX & SWT 9
T ActionListener nimmt JTextField nicht mehr an. AWT, Swing, JavaFX & SWT 2
P ActionListener Graphics Einbauen AWT, Swing, JavaFX & SWT 0
S actionlistener mit 2 fenster integrieren AWT, Swing, JavaFX & SWT 11
Liondary GUI - ActionListener AWT, Swing, JavaFX & SWT 7
J ActionListener erkennt Variable nicht AWT, Swing, JavaFX & SWT 6
E ActionListener führt falsche Funktion aus AWT, Swing, JavaFX & SWT 6
Sin137 ActionListener in MVC AWT, Swing, JavaFX & SWT 7
M ActionListener und mathematische Methoden AWT, Swing, JavaFX & SWT 13
A Oberfläche mit zwei Klassen und actionlistener verbinden AWT, Swing, JavaFX & SWT 7
Paul15 ActionListener Variablen AWT, Swing, JavaFX & SWT 13
Y ActionListener AWT, Swing, JavaFX & SWT 2
K Ereignisbehandlung, ActionListener, ActionEvent AWT, Swing, JavaFX & SWT 3
A Gui für Vokabeltrainer (ActionListener) AWT, Swing, JavaFX & SWT 14
C Im ActionListener Buttons disablen, einen Thread starten, dann Buttons enablen AWT, Swing, JavaFX & SWT 2
M JTextArea wird nicht aktualisiert (ActionListener-Problem) AWT, Swing, JavaFX & SWT 1
J Event Handling JOptionPane ActionListener setzen. AWT, Swing, JavaFX & SWT 3
S ActionListener Klasse aufrufen AWT, Swing, JavaFX & SWT 4
R Swing Problem: IOException bei ActionListener AWT, Swing, JavaFX & SWT 1
J ActionListener soll auf paint() Methode zugreifen AWT, Swing, JavaFX & SWT 1
A JButton wird bei ActionListener nicht "angenommen" AWT, Swing, JavaFX & SWT 7
T Einfaches Problem mit ActionListener AWT, Swing, JavaFX & SWT 2
K ActionListener mit KeyListener AWT, Swing, JavaFX & SWT 7
K GUI, Button, ActionListener - ein paar Einsteigerprobleme AWT, Swing, JavaFX & SWT 1
W Verschachtelter ActionListener AWT, Swing, JavaFX & SWT 0
N gewünschte ActionListener bei RadioButton mit isSelected geht nicht AWT, Swing, JavaFX & SWT 2
C Probleme mit Buttons und einem ActionListener AWT, Swing, JavaFX & SWT 2
K Swing JMenu und ActionListener AWT, Swing, JavaFX & SWT 4
A Swing ActionListener AWT, Swing, JavaFX & SWT 8
V ActionListener Abhängigkeitenproblem AWT, Swing, JavaFX & SWT 6
M ActionListener für mehrere Klassen AWT, Swing, JavaFX & SWT 4
J ActionListener für Buttons AWT, Swing, JavaFX & SWT 3
M Event Handling ActionListener übergeben ich checks net AWT, Swing, JavaFX & SWT 4
C Swing ComboBox - ActionListener deaktivieren AWT, Swing, JavaFX & SWT 2
S Button (ActionListener) funktioniert nicht, wenn y-Koordinate verändert wird AWT, Swing, JavaFX & SWT 5
L Swing ActionListener führt seine Aufgabe nur teilweise aus. AWT, Swing, JavaFX & SWT 7
A Swing ActionListener kann nicht hinzugefügt werden AWT, Swing, JavaFX & SWT 4
P Actionlistener - 3 klassen - kompliziert - auf methoden zugreifen AWT, Swing, JavaFX & SWT 3
Q CardLayout, ausgelagerte Panels, ActionListener AWT, Swing, JavaFX & SWT 5
M ProgressBar in ActionListener AWT, Swing, JavaFX & SWT 4
D AWT eigenem Knopf ActionListener zuweisen AWT, Swing, JavaFX & SWT 24
E Wert aus ActionListener geben AWT, Swing, JavaFX & SWT 4
J ActionListener per Innere Klasse oder e.getActionCommand() if-Abfrage? AWT, Swing, JavaFX & SWT 12
L Swing ActionListener zugriff auf bestimmte Elemente AWT, Swing, JavaFX & SWT 3
P Swing Seltsames ActionListener-Verhalten AWT, Swing, JavaFX & SWT 7
Oliver530 ActionListener von eigener ButtonKlasse AWT, Swing, JavaFX & SWT 16
Kenan89 statischer ActionListener keine Wirkung? AWT, Swing, JavaFX & SWT 2
Kenan89 statischer ActionListener keine Wirkung? AWT, Swing, JavaFX & SWT 3
C In der Schleife ActionListener aktivieren AWT, Swing, JavaFX & SWT 3
B Swing Problem beim ActionListener AWT, Swing, JavaFX & SWT 5
P Swing JPanel mit ActionListener mehrfach verwenden AWT, Swing, JavaFX & SWT 8
1 ActionEvent generieren und an ActionListener weiterleiten AWT, Swing, JavaFX & SWT 12
N Swing Klasse erbt von JDialog - Problem mit innerer ActionListener-Klasse AWT, Swing, JavaFX & SWT 6
N JCombobox und Actionlistener Aktion nur ausführen, wenn Useraktion ihn auslöst AWT, Swing, JavaFX & SWT 4
N Componente und Actionlistener AWT, Swing, JavaFX & SWT 5
C ActionListener AWT, Swing, JavaFX & SWT 6
Corben ActionListener Error AWT, Swing, JavaFX & SWT 2
F Wert durch ActionListener an Klasse übergeben AWT, Swing, JavaFX & SWT 3
I Swing Problem mit InputMap bei JButton (ActionListener) AWT, Swing, JavaFX & SWT 3
S Swing JButton mit ActionListener innerhalb einer JTable AWT, Swing, JavaFX & SWT 4
P Variablen in einem ActionListener zurücksetzen AWT, Swing, JavaFX & SWT 6
M AWT Problem mit ActionListener AWT, Swing, JavaFX & SWT 2
A Swing Bug in Swing? Wenn checkbox disabled reagiert ActionListener nicht AWT, Swing, JavaFX & SWT 5
S ActionListener "nach oben weitergeben" AWT, Swing, JavaFX & SWT 10
M Anonymer ActionListener AWT, Swing, JavaFX & SWT 4
L SWT Actionlistener Combobox öffnen AWT, Swing, JavaFX & SWT 4
S MenuBar ActionListener Event ... AWT, Swing, JavaFX & SWT 6
B Swing Formular mit mehreren Elementen - wie die ActionListener-Verarbeitung lösen? AWT, Swing, JavaFX & SWT 2
M getSource() findet Button nicht - ActionListener AWT, Swing, JavaFX & SWT 4
S Swing mit ActionListener auf Objekte einer anderen Klasse zugreifen AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben