用Java设计鼠标控制程序(如下图)。让程序运行时,如果在窗口中移动鼠标,窗口的底部将显示出鼠标当前的位置,如果移动鼠标的同时还按住Ctrl或Shift键,窗口底部还会显示出C或S,如果用户按下键盘上的键时,程序窗口的底部显示出字母D,当用户松开键盘上的键时,程序窗口底部会显示字母U。
时间: 2024-03-08 17:48:12 浏览: 30
java 程序控制键盘鼠标
4星 · 用户满意度95%
以下是一个Java设计的鼠标控制程序的示例代码,实现了您的要求:
```java
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class MouseControlProgram extends JFrame implements KeyListener {
private static final long serialVersionUID = 1L;
private JLabel statusLabel;
private boolean isCtrlPressed;
private boolean isShiftPressed;
public MouseControlProgram() {
super("鼠标控制程序");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建内容面板
JPanel contentPane = new JPanel(new BorderLayout());
// 创建状态标签
statusLabel = new JLabel("位置:");
// 添加状态标签到内容面板底部
contentPane.add(statusLabel, BorderLayout.SOUTH);
// 添加内容面板到窗口
setContentPane(contentPane);
// 添加鼠标监听器
addMouseListener(new MouseAdapter() {
public void mouseMoved(MouseEvent e) {
updateStatusLabel(e.getPoint());
}
});
// 添加键盘监听器
addKeyListener(this);
// 设置窗口大小和居中显示
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setSize(screenSize.width / 2, screenSize.height / 2);
setLocationRelativeTo(null);
}
// 更新状态标签
private void updateStatusLabel(Point point) {
StringBuilder sb = new StringBuilder("位置:");
sb.append(point.x).append(", ").append(point.y);
if (isCtrlPressed) {
sb.append(" C");
}
if (isShiftPressed) {
sb.append(" S");
}
statusLabel.setText(sb.toString());
}
// 实现 KeyListener 接口
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_CONTROL) {
isCtrlPressed = true;
updateStatusLabel(getMousePosition());
} else if (e.getKeyCode() == KeyEvent.VK_SHIFT) {
isShiftPressed = true;
updateStatusLabel(getMousePosition());
} else {
statusLabel.setText("位置:D");
}
}
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_CONTROL) {
isCtrlPressed = false;
updateStatusLabel(getMousePosition());
} else if (e.getKeyCode() == KeyEvent.VK_SHIFT) {
isShiftPressed = false;
updateStatusLabel(getMousePosition());
} else {
statusLabel.setText("位置:U");
}
}
public void keyTyped(KeyEvent e) {
}
public static void main(String[] args) {
EventQueue.invokeLater(() -> new MouseControlProgram().setVisible(true));
}
}
```
在这个程序中,我们创建了一个 `JFrame` 窗口,并在底部添加了一个 `JLabel` 标签用来显示鼠标的位置和键盘按键状态。我们实现了 `MouseListener` 和 `KeyListener` 接口来监听鼠标和键盘事件,并根据事件的类型更新状态标签的内容。在 `mouseMoved` 方法中,我们获取鼠标的位置并调用 `updateStatusLabel` 方法来更新状态标签的内容。在 `keyPressed` 和 `keyReleased` 方法中,我们根据按键的类型更新 `isCtrlPressed` 和 `isShiftPressed` 变量,并调用 `updateStatusLabel` 方法来更新状态标签的内容。
阅读全文