日期:2014-05-20  浏览次数:20800 次

修女重逢
设计个鼠标键盘控制程序.JAVA版.谢谢了!

如果在窗口中移动鼠标,窗口的底部将显示鼠标的当前坐标位置;
如果移动鼠标的同时按按住Ctrl或Shift键,窗口低部会显示出C或S,
如果用户按下键盘上的键时,程序窗口的底部显示字母"D";
当用户松开键盘的时候,程序窗口底部显示字母"U".

------解决方案--------------------
package mousedemo;

import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyAdapter;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2007</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class MouseMove extends JFrame {
public static void main(String args[]){
new MouseMove();
}
JPanel contentPane;
BorderLayout borderLayout1 = new BorderLayout();
JLabel jLabel1 = new JLabel();
public MouseMove() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}

/**
* Component initialization.
*
* @throws java.lang.Exception
*/
private void jbInit() throws Exception {
contentPane = (JPanel) getContentPane();
contentPane.setLayout(borderLayout1);
setSize(new Dimension(400, 300));
this.setBounds(300,200,400,300);
setTitle("Frame Title");
this.setVisible(true);
this.addMouseMotionListener(new MouseMove_this_mouseMotionAdapter(this));
this.addKeyListener(new MouseMove_this_keyAdapter(this));
this.addKeyListener(new MouseMove_this_keyReleased(this));
jLabel1.setText("jLabel1");
contentPane.add(jLabel1, java.awt.BorderLayout.SOUTH);
}

public void this_keyPressed(KeyEvent e) {
if(e.getKeyCode()==16){
jLabel1.setText("S");
}else if(e.getKeyCode()==17){
jLabel1.setText("C");
}else{
jLabel1.setText("D");
}
}

public void this_keyReleased(KeyEvent e) {
jLabel1.setText("U");
}

public void this_mouseMoved(MouseEvent e) {
jLabel1.setText("X= " + e.getX() + "\t Y= " + e.getY());
}

}

class MouseMove_this_keyReleased extends KeyAdapter {
private MouseMove adaptee;
MouseMove_this_keyReleased(MouseMove adaptee) {
this.adaptee = adaptee;
}
public void keyReleased(KeyEvent e) {
adaptee.this_keyReleased(e);
}
}
class MouseMove_this_keyAdapter extends KeyAdapter {
private MouseMove adaptee;
MouseMove_this_keyAdapter(MouseMove adaptee) {
this.adaptee = adaptee;
}
public void keyPressed(KeyEvent e) {
adaptee.this_keyPressed(e);
}
}


class MouseMove_this_mouseMotionAdapter extends MouseMotionAdapter {
private MouseMove adaptee;
MouseMove_this_mouseMotionAdapter(MouseMove adaptee) {
this.adaptee = adaptee;
}

public void mouseMoved(MouseEvent e) {
adaptee.this_mouseMoved(e);
}
}

------解决方案--------------------
写好了,不明白楼主为何自称修女??:
Java code
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class MouseDetector extends JFrame implements MouseMotionListener, KeyListener {
    
    private JPanel detectingArea;
    private JLabel coordinates;
    private JLabel modifierStatus;
    private JLabel keyStatus;
    
    public MouseDetector() {
        super("鼠标侦测器");
        setSize(400, 300);
        setupPanels();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    
    private void setupPanels() {
        Container contentPane = getContentPane();
        contentPane.setLayout(new BorderLayout());
        
        detectingArea = new JPanel();
        detectingArea.addMouseMotionListener(this);
        addKeyListener(this);
        contentPane.add(detectingArea, BorderLayout.CENTER);
        
        JPanel statusBar = new JPanel();
        coordinates = new JLabel("X: , Y: ");
        modifierStatus = new JLabel();
        keyStatus = new JLabel("U");
        statusBar.add(coordinates);
        statusBar.add(modifierStatus);
        statusBar.add(keyStatus);
        contentPane.add(statusBar, BorderLayout.SOUTH);
    }
    
    public static void main(String[] args) {
        new MouseDetector().setVisible(true);
    }
    
    public void mouseMoved(MouseEvent me) {
        coordinates.setText("X: " + me.getXOnScreen() + ", Y: " + me.getYOnScreen());
        detectingKeys(me);
    }

    public void mouseDragged(MouseEvent me) {
        mouseMoved(me);
    }
    
    public void keyReleased(KeyEvent ke) {
        keyStatus.setText("U");
        detectingKeys(ke);
    }

    public void keyPressed(KeyEvent ke) {
        keyStatus.setText("D");
        detectingKeys(ke);
    }
    
    public void keyTyped(KeyEvent ke) {
    }

    private void detectingKeys(InputEvent ie) {
        if (ie.getModifiers() == InputEvent.CTRL_MASK) modifierStatus.setText("C");
        else if (ie.getModifiers() == InputEvent.SHIFT_MASK) modifierStatus.setText("S");
        else if (ie.getModifiers() == InputEvent.CTRL_MASK + InputEvent.SHIFT_MASK) modifierStatus.setText("CS");
        else modifierStatus.setText("");
    }

}