protected void paintComponent(Graphics g) { super.paintComponent(g); if (test.getMapNodes() != null) { System.out.println("enter the drawGreenNodes"); TwoTuple[] nodes = test.getMapNodes(); g.setColor(Color.GREEN); for (int i = 0; i < nodes.length; i++) { if (nodes[i] != null) { int x = nodes[i].first; int y = nodes[i].second; g.fillRect(y * CELL_SIZE + CELL_SIZE + CELL_SIZE / 4, x * CELL_SIZE + CELL_SIZE + CELL_SIZE / 4, CELL_SIZE / 2, CELL_SIZE / 2); } } }就是点击xxx然后绿色出现,演示一下
时间: 2024-02-10 13:05:25 浏览: 30
要在Java Swing中实现点击出现标记的效果,您可以使用MouseListener接口来监听鼠标点击事件,并在适当的位置绘制标记。
以下是一个简单的示例代码,演示了如何在鼠标点击时在指定位置绘制一个绿色方块:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ClickToMark extends JPanel implements MouseListener {
private int mouseX, mouseY;
private boolean mouseClicked;
public ClickToMark() {
setPreferredSize(new Dimension(400, 400));
setBackground(Color.WHITE);
addMouseListener(this);
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (mouseClicked) {
g.setColor(Color.GREEN);
g.fillRect(mouseX - 5, mouseY - 5, 10, 10);
}
}
public void mouseClicked(MouseEvent e) {
mouseX = e.getX();
mouseY = e.getY();
mouseClicked = true;
repaint();
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public static void main(String[] args) {
JFrame frame = new JFrame("Click to Mark");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new ClickToMark());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
```
您可以将`mouseClicked`变量设置为true,以在鼠标点击时绘制标记。您可以根据需要调整绘制标记的位置和大小。