r3dm1ke
r3dm1ke

Reputation: 25

Mouse event doesn't work in java for some reason

Mouse event appears not to work, and i can't find out, why.
I added a debug output at imgEdit.drawDot and there's no output at the console. I'm a newbie in java, so my code may seem to be very bad, as well as my english

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

/**
 * Created by doctor on 12/29/15.
 */

public class MainUI {
    Window mainWindow;
    MainUI() {
        mainWindow = new Window();
    }
}
class Window extends JFrame {
    Window() {
        setBounds(0, 0, 600, 400);
        setTitle("RebBrush");
        Panel mainPanel = new Panel();
        Container mainCont = getContentPane();
        mainCont.setLayout(null);
        mainCont.add(mainPanel);
        setVisible(true);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}
class Panel extends JPanel {
    private ImageEdit imgEdit;
    private JLabel imgLabel;
    Panel() {
        setLayout(null);
        imgEdit = new ImageEdit(600, 400);
        imgLabel = new JLabel(new ImageIcon(imgEdit.getImage()));
        imgLabel.setBounds(0, 0, 600, 400);
        add(imgLabel);
        addMouseMotionListener(new MouseMotionListener() {
            @Override
            public void mouseDragged(MouseEvent e) {
                imgEdit.drawDot(e.getX(), e.getY());
            }

            @Override
            public void mouseMoved(MouseEvent e) {

            }
        });
    }
}

Upvotes: 0

Views: 670

Answers (1)

Mshnik
Mshnik

Reputation: 7032

Simply getting rid of the null layouts did the trick for me. I'm not sure what ImageEdit is (some other class you've defined?), but by running the following I see "Mouse Dragged" show up in the console, so the mouseDragged method is definitely being called. Just uncomment the imageEdit stuff to put it back in.

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

/**
 * Created by doctor on 12/29/15.
 */

public class MainUI {
  Window mainWindow;
  MainUI() {
    mainWindow = new Window();
  }
  public static void main(String[] args) {
    new MainUI();
  }
}


class Window extends JFrame {
  Window() {
    setBounds(0, 0, 600, 400);
    setTitle("RebBrush");
    Panel mainPanel = new Panel();
    Container mainCont = getContentPane();
    mainCont.add(mainPanel);
    setVisible(true);
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  }
}
class Panel extends JPanel {
  //private ImageEdit imgEdit;
  private JLabel imgLabel;
  Panel() {
    //imgEdit = new ImageEdit(600, 400);
    //imgLabel = new JLabel(new ImageIcon(imgEdit.getImage()));
    //imgLabel.setBounds(0, 0, 600, 400);
    //add(imgLabel);
    addMouseMotionListener(new MouseMotionListener() {
      @Override
      public void mouseDragged(MouseEvent e) {
        System.out.println("Mouse Dragged");
        //imgEdit.drawDot(e.getX(), e.getY());
      }

      @Override
      public void mouseMoved(MouseEvent e) {

      }
    });
  }
}

Upvotes: 1

Related Questions