eneR: JPanel in JPanel - MouseEvents?`

Hi!

Ich habe in einem JFrame ein JPanel, dass wie folgt "definiert" ist:
private FolderView leftPane = new FolderView();

Wenn ich jetzt in der "FolderView" den MouseListener implementiere:
"implements java.awt.event.MouseListener"

und die entsprechenden Methoden, z.B.:
"public void mouseClicked(MouseEvent e) {
     System.out.println("KLICK!");
}"

implementiere, passiert (bei "Click") nichts.

Wie muss ich vorgehen, damit das funktioniert?

Grüße,
eneR

P.S.: Ich möchte die Methoden nur höchst ungern in dem JFrame implementieren.

  1. Hi,

    Ich habe in einem JFrame ein JPanel, dass wie folgt "definiert" ist:
    private FolderView leftPane = new FolderView();

    Belegt leftPane die Fläche, von der Du glaubst, daß sie belegt wird?
    Aus Deinen Code-Schnipselchen ist das nicht erkennbar, da nicht dabei steht, welcher Layoutmanager im JFrame benutzt wird, welche Constraints ggf. für Dein leftView gelten usw.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
    1. Hi,

      Ich habe in einem JFrame ein JPanel, dass wie folgt "definiert" ist:
      private FolderView leftPane = new FolderView();

      Belegt leftPane die Fläche, von der Du glaubst, daß sie belegt wird?

      Ja, da auf der betreffenden Fläche per g.drawXYZ() gezeichnet wird, und das auch sichtbar ist.

      Aus Deinen Code-Schnipselchen ist das nicht erkennbar, da nicht dabei steht, welcher Layoutmanager im JFrame benutzt wird, welche Constraints ggf. für Dein leftView gelten usw.

      Hier der Code, auf das Wesentliche reduziert:

      _UI.java_

        
        
      public class UI extends javax.swing.JFrame {  
        
        
          /** Creates new form UI */  
          public UI() {  
              initComponents();  
      /** s.[i]Anmerkung. **/  
          }  
        
          private void initComponents() {  
        
              jPanel1 = new FolderView();  
        
              javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);  
              jPanel1.setLayout(jPanel1Layout);  
              jPanel1Layout.setHorizontalGroup(  
                  jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)  
                  .addGap(0, 540, Short.MAX_VALUE)  
              );  
              jPanel1Layout.setVerticalGroup(  
                  jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)  
                  .addGap(0, 163, Short.MAX_VALUE)  
              );  
        
              javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());  
              getContentPane().setLayout(layout);  
              layout.setHorizontalGroup(  
                  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)  
                  .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)  
              );  
              layout.setVerticalGroup(  
                  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)  
                  .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)  
              );  
        
              pack();  
          }  
        
          // Variables declaration  
          private javax.swing.JPanel jPanel1;  
          // End of variables declaration  
        
      }  
        
      
      

      [i]Anmerkung. Ich habs jetzt ersteinmal so implementiert, aber das ist ja höchst unschön:

        
              jPanel1.addMouseListener(new MouseListener() {  
                  public void mouseClicked(MouseEvent e) {  
                      ((FolderView)jPanel1).mouseClicked(e);  
                  }  
        
                  public void mousePressed(MouseEvent e) {  
                      ((FolderView)jPanel1).mousePressed(e);  
                  }  
        
      usw...  
              });
      

      _FolderView.java_

        
      public class FolderView extends javax.swing.JPanel implements java.awt.event.MouseListener {  
      ...  
        
          public FolderView() {  
      ...  
          }  
        
          @Override  
          public void paint(Graphics g) {  
            g.drawXYZ();  
      ...  
          }  
        
          public void mouseClicked(MouseEvent e) {  
              System.out.println("KLICK!:"+e.getX()+":"+e.getY());  
          }  
        
          public void mousePressed(MouseEvent e) {  
              System.out.println("Press:"+e.getX()+":"+e.getY());  
          }  
      ...  
      }  
      
      

      cu,
      Andreas

      Gruß,
      eneR