利用swing设计一个java程序,让程序运行时,如果在窗口中移动鼠标,窗口的底部将显示出鼠标当前的位置,如果移动鼠标的同时还按住Ctrl或Shift键,窗口底部还会显示出C或S,如果用户按下键盘上的键时,程序窗口的底部显示出字母D,当用户松开键盘上的键时,程序窗口底部会显示字母U。
时间: 2024-03-08 09:49:40 浏览: 149
java的swing界面
好的,以下是代码实现:
```java
import java.awt.BorderLayout;
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;
import javax.swing.SwingConstants;
public class MousePosition extends JFrame implements KeyListener {
private static final long serialVersionUID = 1L;
private JLabel label;
private JLabel keyLabel;
public MousePosition() {
super("Mouse Position");
setSize(400, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new BorderLayout());
label = new JLabel("", SwingConstants.CENTER);
keyLabel = new JLabel("", SwingConstants.CENTER);
panel.add(label, BorderLayout.CENTER);
panel.add(keyLabel, BorderLayout.SOUTH);
add(panel);
addMouseListener(new MouseAdapter() {
@Override
public void mouseMoved(MouseEvent e) {
String text = "X: " + e.getX() + ", Y: " + e.getY();
if (e.isControlDown()) {
text += " C";
}
if (e.isShiftDown()) {
text += " S";
}
label.setText(text);
}
});
addKeyListener(this);
setFocusable(true);
setVisible(true);
}
public static void main(String[] args) {
new MousePosition();
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() != KeyEvent.VK_CONTROL && e.getKeyCode() != KeyEvent.VK_SHIFT) {
keyLabel.setText("D");
}
}
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() != KeyEvent.VK_CONTROL && e.getKeyCode() != KeyEvent.VK_SHIFT) {
keyLabel.setText("U");
}
}
@Override
public void keyTyped(KeyEvent e) {
// do nothing
}
}
```
这个程序会创建一个窗口,在窗口中移动鼠标时,窗口底部会显示出鼠标当前的位置,并且如果同时按下Ctrl或Shift键,底部还会显示出C或S。
当用户按下键盘上的键时,程序窗口的底部显示出字母D,当用户松开键盘上的键时,程序窗口底部会显示字母U。
注意:为了让程序能够接收到键盘事件,窗口必须是焦点窗口,所以我们在程序中调用了`setFocusable(true)`来设置窗口可聚焦。
阅读全文