设计个鼠标键盘控制程序.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(""); }}