首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MouseListener - MouseClicked

MouseListener - MouseClicked
EN

Stack Overflow用户
提问于 2019-02-11 15:13:17
回答 2查看 934关注 0票数 1

经过两个小时的搜索,我真的找不出为什么我的代码不能工作,所以我想知道你是否能帮上忙。

当我按下按钮时,我只想看到“点击”。我的类MouseInput实现了MouseListener,在方法mouseClicked中,我得到的只有system.out...("clicked");

代码语言:javascript
复制
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;

public class App implements Runnable {


    private Display display;
    private BufferStrategy bs;
    private Graphics g;


    private int cubeSide = 150;
    private String title;
    private int height,width;
    private boolean running = false;
    private Thread thread;
    private MouseInput mouseInput;



    public App(String title,int width,int height){
        this.height=height;
        this.width=width;
        this.title=title;
        display = new Display(title, width, height);
    }
    void setBufferStrategy(){
        if(display.getCanvas().getBufferStrategy()==null){
            display.getCanvas().createBufferStrategy(3);
        }
        bs = display.getCanvas().getBufferStrategy();
    }
    void init(){
        setBufferStrategy();
        mouseInput = new MouseInput();
        display.getFrame().addMouseListener(mouseInput);
    }
    public synchronized void start(){
        if(running==true)
            return;
        running=true;
        thread = new Thread(this);
        thread.start();

    }
    void render(){
    }
    @Override
    public void run() {
        init();
        while(running){
            render();
        }

    }
    public synchronized void stop(){

    }
}

MouseInput码

代码语言:javascript
复制
`import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;


public class MouseInput implements MouseListener {

@Override
public void mouseClicked(MouseEvent arg0) {
    // TODO Auto-generated method stub
    System.out.println("Click");
}

@Override
public void mouseEntered(MouseEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void mouseExited(MouseEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void mousePressed(MouseEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void mouseReleased(MouseEvent arg0) {
    // TODO Auto-generated method stub

}

}`

对于显示类

代码语言:javascript
复制
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;

import javax.swing.JFrame;


public class Display {
private JFrame frame;
private Canvas canvas;
private String title;
private int width,height;


public Display(String title,int width,int height){
    this.width = width;
    this.height=height;
    this.title=title;
    CreateDisplay();
}
public void CreateDisplay(){
    frame = new JFrame(title);
    canvas = new Canvas();
    frame.setSize(width,height);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    frame.setFocusable(false);
    frame.setResizable(false);
    frame.setLocationRelativeTo(null);

    canvas.setPreferredSize(new Dimension(width,height));
    canvas.setMaximumSize(new Dimension(width,height));
    canvas.setMinimumSize(new Dimension(width,height));
    canvas.setBackground(Color.WHITE);
    frame.add(canvas);
    frame.pack();

}
public Canvas getCanvas(){
    return canvas;
}
public JFrame getFrame(){
    return frame;
}
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-11 15:51:14

我认为问题可能在display.getFrame().addMouseListener(mouseInput)中:我认为display.getFrame()返回一个扩展java.awt.Component的类的实例;根据API参考addMouseListener

添加指定的鼠标侦听器以接收来自此组件的鼠标事件。

我认为按钮上的事件不是来自您注册侦听器的组件的事件:您可以尝试在画布实例上而不是在框架实例上注册侦听器吗?可能是源于画布,而不是框架.

票数 1
EN

Stack Overflow用户

发布于 2019-02-11 15:56:19

首先,您可以使用内联鼠标适配器,而不是扩展鼠标侦听器,并且需要为鼠标代码提供一个单独的文件。

第二,如果要观察按钮上的单击,请将侦听器添加到按钮中。

代码语言:javascript
复制
    yourJButton.addMouseListener( new MouseAdapter()
    {
        @Override
        public void mouseClicked( MouseEvent e )
        {
            {
                 //do stuff
            }
        }
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54633590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档