4

我正在创建一个游戏,其中有一个包含多个视图的菜单,用于使用游戏状态转换来选择游戏类型、选项等。每个菜单都将在Canvas对象上的JFrame中主动呈现。由于我通过将BufferedImage绘制到Canvas来对每个游戏状态进行主动渲染,因此我不能使用JButton或任何其他JComponent组件(awt),因为 Graphics2D 对象不能像这样绘制它们:

Graphics2D g = bufferStrategy.getDrawGraphics();
g.draw(new JButton("Click me"));

如何实现可以接收鼠标输入并使用 Graphics2D 对象绘制的自定义按钮?

4

2 回答 2

1

向您正在绘制的组件添加鼠标侦听器,并让它确定鼠标单击是否在您想要成为按钮的区域中。

于 2011-01-05T15:25:37.240 回答
0

为什么要在已经使用 Swing(JFrame 是 Swing)的应用程序中使用 Canvas?

BufferedImage image = new BufferedImage(blah....)
Graphics2D gfx = image.createGraphics();
JButton but = new JButton("Click me");
but.update(gfx);

但这真的真的真的很丑!

你为什么不拿一个JPanel?Afaik 你可以覆盖paint 方法来调用update 方法,这样面板就不会被清除(但我已经有一段时间在玩Java了)。然后你可以使用你在更新方法中作为参数得到的 Graphics2D 来绘制东西,它甚至允许你添加你自己的按钮和其他东西......

于 2011-01-05T15:33:59.567 回答