Napísal som MouseMotionListener
pre JPanel
,, ale ja sa zmiasť, ako ju používať.
Poslucháč triedy funguje dobre, keď pridané na rám pomocou aWindow.add(new MouseMotionEvents())
ale keď sa snažím ju pridať na panel pomocou content.add(new MouseMotionEvents())
,, nefunguje to. Som nový Swing a JComponent
s, mohol by niekto mi dať nejaké rady?
public class test {
public static void main(String[] args) {
JFrame aWindow = new JFrame();
aWindow.setBounds(600, 600, 600, 600);
aWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel content = new JPanel();
content.add(new MouseMotionEvents());
aWindow.add(content);
aWindow.setVisible(true);
}
}
class MouseMotionEvents extends JPanel implements MouseListener,
MouseMotionListener {
Point p;
Point r;
public MouseMotionEvents() {
addMouseListener(this);
addMouseMotionListener(this);
}
public void mouseClicked(MouseEvent me) {
// p = me.getPoint();
// repaint();
}
public void mouseEntered(MouseEvent me) {
}
public void mouseExited(MouseEvent me) {
}
public void mousePressed(MouseEvent me) {
p = me.getPoint();
// repaint();
}
public void mouseReleased(MouseEvent me) {
r = me.getPoint();
repaint();
}
public void mouseDragged(MouseEvent me) {
r = me.getPoint();
repaint();
}
public void mouseMoved(MouseEvent me) {
}
public void paint(Graphics g) {
if (p != null && r != null) {
Dimension d = getSize();
int xc = d.width / 2;
int yc = d.height / 2;
if(p.getX()-r.getX()>0 && p.getY()-r.getY()>0){
g.drawRect((int)p.getX(), (int)p.getY(), (int)(p.getX()-r.getX()), (int)(p.getY()-r.getY()));
}
if(p.getX()-r.getX()>0 && p.getY()-r.getY()<0){
g.drawRect((int)p.getX(), (int)p.getY(), (int)(p.getX()-r.getX()), (int)(-p.getY()+r.getY()));
}
if(p.getX()-r.getX()<0 && p.getY()-r.getY()>0){
g.drawRect((int)p.getX(), (int)p.getY(), (int)(-p.getX()+r.getX()), (int)(p.getY()-r.getY()));
}
if(p.getX()-r.getX()<0 && p.getY()-r.getY()<0){
g.drawRect((int)p.getX(), (int)p.getY(), (int)(-p.getX()+r.getX()), (int)(-p.getY()+r.getY()));
}
}
}
}