1

我正在用 Java 编写一个中国象棋程序,非常感谢有关设计/实现 GUI 的一些指导。

棋盘将被划分为 9x10 的网格,棋子的“图像”占据每个单元格。单击时还需要“注册”单元格,以便我知道单击了哪个部分。

1)我正在考虑代表董事会GridLayout的布局管理器。JPanel如何为每个组件添加图像?

public void paintComponent(Graphics g) {
   Image dog = new ImageIcon("dog.png").getImage();
   add(dog)
}

不起作用,因为dogis not a Component

2)如何注册每个单元格中的点击?

4

2 回答 2

4

使用包含图标的 JLabel。然后将标签添加到网格布局中。阅读有关如何使用图标的 Swing 教程以获取更多信息。

另请阅读关于How to Write a Mouse Listener收听标签点击的部分。

或者您可以使用带有图标的 JButton,然后使用:

button.setBorderPainted(false);

所以你看不到点击按钮的动作。然后你会使用一个 ActionListener。本教程还包含有关使用 ActionListener 的部分。

于 2013-07-01T03:06:40.650 回答
4

是的,GridLayout似乎适合这种用途。

请参阅构造函数JButton(Icon)

有关分割现有图像图块集以在实例中使用的示例,请参见此答案JLabelJButton

于 2013-07-01T03:06:59.747 回答