这是我的第一篇文章,所以我希望它不会太令人畏惧。所以我正在尝试创建一个基于十六进制的策略游戏,虽然还没有,但无论如何。
为了实现基于十六进制的游戏,我想创建一个由十六进制组成的字段,用户应该能够单击该字段,并接收该像素的坐标。目前,我可以生成一个十六进制字段或一个鼠标侦听器/鼠标适配器,但不能同时生成两者。最后一个执行的替换屏幕上的另一个。
如果pane.add(New HexMap()); 用pane.add(new MouseListener())切换;侦听器有效,但未打印该行
我已经环顾了很长一段时间,但我遇到的帖子要么涉及更改鼠标侦听器可以做的背景颜色,因为背景独立于鼠标传感器http://docs.oracle.com/javase/教程/uiswing/events/mouselistener.html?我得到的其他示例对我来说太高级了,因为它们使用多个窗格,我无法理解它们http://docs.oracle.com/javase/tutorial/uiswing/components/分层窗格.html。
所以我正在寻找一种在单个窗格上添加鼠标侦听器的方法,显示十六进制。这可能吗?EG 在 mouselistener 之后添加 hexMap 不会覆盖 mouselistener 而是充当添加
已经创建了一条线作为十六进制的占位符。
编码:
import java.awt.*;
import java.awt.event.*;
import java.awt.font.*;
import java.awt.geom.*;
import java.util.*;
import java.util.List;
import javax.swing.*;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
public class GraphicsSetup extends JPanel{
public static final int FRAME_WIDTH = 600;
public static final int FRAME_HEIGHT= 400;
private static JFrame frame;
public static void main(String[] args){
GraphicsSetup draw = new GraphicsSetup();
}
public GraphicsSetup(){
HexMap hexMap = new HexMap();
JPanel panel = new JPanel();
frame = new JFrame("HexExample");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(FRAME_WIDTH,FRAME_HEIGHT);
Container pane = frame.getContentPane();
pane.setBackground(new Color(20, 100, 30));
pane.add(new MouseListener());
pane.add(new HexMap());
frame.setVisible(true);
}
public class HexMap extends JComponent{
public void paint(Graphics g){
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.blue);
g2d.drawLine(0,0, FRAME_WIDTH, FRAME_HEIGHT);
}
}
class MouseListener extends JComponent{
public MouseListener(){
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent me) {
System.out.println("Mouse Event" + me);
}
});
}
}
}
此致