【问题标题】:Making the board GUI for a Chinese Chess program为中国象棋程序制作棋盘 GUI
【发布时间】:2013-06-28 03:03:59
【问题描述】:

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

棋盘被划分成一个 9x10 的网格,每个单元格都有一个棋子的“图像”。单击时还需要“注册”单元格,以便我知道单击了哪一块。

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

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

因为dog 不是Component,所以不起作用。

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

【问题讨论】:

    标签: java swing panel layout-manager paintcomponent


    【解决方案1】:

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

    参见构造函数JButton(Icon)

    请参阅this answer 以获取分割现有图像平铺集以用于JLabelJButton 实例的示例。

    【讨论】:

    • +1,我只是在寻找这个例子,认为问鼓问题的OP(用透明圆圈播放声音)可能可以使用这样的东西。现在,我已经标记了链接:0
    【解决方案2】:

    使用包含图标的 JLabel。然后将标签添加到网格布局中。阅读How to Use Icons 上的 Swing 教程了解更多信息。

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

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

    button.setBorderPainted(false);
    

    所以你看不到点击按钮的动作。然后你会使用一个 ActionListener。本教程还有一节介绍如何使用 ActionListener。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多