簡體   English   中英

鼠標事件由於某種原因在Java中不起作用

[英]Mouse event doesn't work in java for some reason

鼠標事件似乎無法正常工作,我找不到原因。
我在imgEdit.drawDot上添加了調試輸出,控制台上沒有輸出。 我是Java的新手,所以我的代碼似乎以及英語都非常糟糕

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) {

            }
        });
    }
}

僅僅擺脫null布局對我來說就成功了。 我不確定ImageEdit是什么(您定義的其他類嗎?),但是通過運行以下命令,我看到控制台上顯示“ Mouse Dragged”,因此肯定會調用mouseDragged方法。 只需取消注釋imageEdit內容即可將其放回去。

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) {

      }
    });
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM