JPanel in JPanel - MouseEvents?`
eneR
- java
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.
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
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