简体   繁体   English

JApplet不接收鼠标事件

[英]JApplet does not receive mouse-events

I'm trying to listen to MouseEvents in Java on a JApplet in a JFrame. 我正在尝试在JFrame中的JApplet上用Java监听MouseEvents。 My program is actually doing more stuff, but I've simplified it for you to this: 我的程序实际上正在做更多的工作,但是我已经为您简化了它:

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;

public class mouse extends JApplet implements MouseListener, MouseMotionListener {

static final private int SCREENW = 800;
static final private int SCREENH = 300;

private static JFrame window = null;

public mouse() {
    if(window!=null)
        return;

    window = new JFrame("Window");
    window.addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    });
    window.addMouseListener( this );
    window.addMouseMotionListener( this );
    window.getContentPane().add("Center", this);

    window.pack();
    window.setSize(new Dimension(SCREENW, SCREENH));
    window.setVisible(true);    
    window.setFocusable(true);  
    window.requestFocusInWindow();      

}   

public void mouseEntered( MouseEvent e ) {
    System.out.println("Test0");
}
public void mouseExited( MouseEvent e ) {
    System.out.println("Test1");
}
public void mouseClicked( MouseEvent e ) {
    System.out.println("Test2");
}
public void mousePressed( MouseEvent e ) {   
    System.out.println("Test3");
}
public void mouseReleased( MouseEvent e ) {  
    System.out.println("Test4");
}
public void mouseMoved( MouseEvent e ) {  
    System.out.println("Test5");
}
public void mouseDragged( MouseEvent e ) {  
    System.out.println("Test6");
}



public static void main(String s[]) {
    mouse Mouse = new mouse();  

}
}

Note: I'm testing all this on a Ubuntu 14.04 maschine. 注意:我正在Ubuntu 14.04机器上测试所有这些。 When running 'java mouse', the window opens but no event is triggered. 运行“ java鼠标”时,窗口将打开,但不会触发任何事件。 What is wrong? 怎么了?

Are you aware that JApplets can draw on their own? 您是否知道JApplets可以自己使用? If run in a web page, creating a frame from a class extending JApplet would result in the JApplet running in the page, while the JFrame would pop out. 如果在网页中运行,则通过扩展JApplet的类创建框架将导致JApplet在页面中运行,而JFrame将弹出。

You can see an example here , basically you shouldn't need a JFrame to display your primitives. 您可以在此处看到一个示例 ,基本上不需要JFrame来显示您的基元。 A paint() function should be enough to do that. paint()函数应该足以做到这一点。

window.setBounds(100, 100, SCREENW, SCREENH);

失踪!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM