Dies hier ist ein kleines Beispiel einer eigenen Komponente, die von JComponent erbt. Sie soll nur ein Rechteck malen und wenn man diese auf der GUI anklickt, etwas ausprinten.
Dazu noch die GUI mit Main-Methode:
Das Ganze kann man also als „Kurzes kompilierbares Beispiel“ ansehen ;D
Wenn ich ich auf das Rechteck klicke, wird etwas ausgegeben – soweit, so gut. Das Problem ist nun, dass es auch ausgegeben wird, wenn ich danebe klicke – egal, wohin im Fenster ich klicke!
Woran liegt das, was habe ich vegessen/falsch gemacht?
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.JComponent;
public class Compo extends JComponent implements MouseListener
{
public Compo()
{
setPreferredSize(new Dimension(123, 123));
setSize(123, 123);
addMouseListener(this);
}
@Override
public void paintComponent(Graphics graphics)
{
super.paintComponents(graphics);
graphics.drawRect(0, 0, 122, 122);
}
@Override
public void mouseClicked(MouseEvent e)
{
System.out.println("sdfk");
}
// ↓ Wayne ↓
@Override
public void mouseEntered(MouseEvent e)
{
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e)
{
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e)
{
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e)
{
// TODO Auto-generated method stub
}
}
Dazu noch die GUI mit Main-Methode:
Java:
import javax.swing.*;
public class GUI extends JFrame
{
public GUI()
{
super("Testing");
setSize(740, 650);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Compo rectangle = new Compo();
getContentPane().add(rectangle);
}
public static void main(String[] args)
{
new GUI().setVisible(true);
}
}
Das Ganze kann man also als „Kurzes kompilierbares Beispiel“ ansehen ;D
Wenn ich ich auf das Rechteck klicke, wird etwas ausgegeben – soweit, so gut. Das Problem ist nun, dass es auch ausgegeben wird, wenn ich danebe klicke – egal, wohin im Fenster ich klicke!
Woran liegt das, was habe ich vegessen/falsch gemacht?