java鼠标点击扑克牌扑克牌抽出,再点击扑克牌回到牌中
时间: 2023-10-19 18:07:40 浏览: 138
JAVA扑克牌
5星 · 资源好评率100%
实现这个功能的关键是如何在Java GUI中实现鼠标点击事件。以下是一个简单的实现方式:
1. 创建一个继承自JPanel的类,用于表示扑克牌。
2. 在这个类中重写paintComponent方法,用于绘制扑克牌的图形。
3. 在这个类中添加一个MouseListener,用于监听鼠标事件。
4. 实现MouseListener的mouseClicked方法,在这个方法中判断鼠标点击的位置是否在扑克牌的范围内,如果是,则将扑克牌从牌堆中抽出,并显示在面板上;如果不是,则将扑克牌放回牌堆中。
5. 在GUI中添加多个扑克牌实例,可以使用JPanel或JLabel等组件来实现。
以下是一个简单的示例代码:
```
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class PokerPanel extends JPanel {
private boolean selected = false; // 是否被选中
private int x, y; // 扑克牌的位置
public PokerPanel(int x, int y) {
this.x = x;
this.y = y;
addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
int mouseX = e.getX();
int mouseY = e.getY();
if (mouseX >= x && mouseX <= x + 50 && mouseY >= y && mouseY <= y + 70) {
selected = !selected;
repaint();
}
}
});
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.WHITE);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.BLACK);
g.drawRect(0, 0, getWidth() - 1, getHeight() - 1);
if (selected) {
g.setColor(Color.RED);
g.fillRect(0, 0, getWidth(), getHeight());
} else {
g.setColor(Color.WHITE);
g.fillRect(0, 0, getWidth(), getHeight());
}
g.setColor(Color.BLACK);
g.drawString("A", 10, 20);
g.drawString("♥", 10, 40);
}
public static void main(String[] args) {
JFrame frame = new JFrame("Poker");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 400);
frame.setLayout(null);
PokerPanel poker1 = new PokerPanel(50, 50);
PokerPanel poker2 = new PokerPanel(150, 50);
frame.add(poker1);
frame.add(poker2);
frame.setVisible(true);
}
}
```
在这个示例代码中,PokerPanel继承自JPanel,用于表示一个扑克牌。在构造函数中添加了一个MouseListener,用于监听鼠标点击事件。在paintComponent方法中绘制了扑克牌的图形。main方法中创建了两个PokerPanel实例,并添加到JFrame中显示。当用户点击扑克牌时,会判断鼠标点击的位置是否在扑克牌的范围内,如果是,则将扑克牌从牌堆中抽出,并显示在面板上;如果不是,则将扑克牌放回牌堆中。
阅读全文