用Java连接4个GUI(JApplet)

时间:2013-07-29 02:32:54

标签: java swing applet

我目前正在编写一个Connect 4 Applet游戏,我已经实现了所有的AI逻辑。现在我需要设计一个简单的gui,这样我就可以玩了 我有一个我想要使用的板的图像(透明的png),我希望能够通过点击图像(例如我想要播放的特定列)来执行移动。

这样做的最佳方式是什么?我想使用一个扩展JPanel的类,我把所有的按钮和东西放在里面......包括画板图像。但我可以在图像上放一个鼠标监听器吗?

3 个答案:

答案 0 :(得分:4)

  

“但我可以将鼠标监听器放在图像上吗?”

不,或者至少,不在你想的背景下。

根据您想要达到的目标,您有几个选择。

但基本要求是,您需要准确了解每个点击点在图像上的位置。最好通过使用图像编辑程序来绘制“热点”,然后将这些编码到程序中

来实现

你可以......

使用JLabel呈现电路板图像并附加MouseListener

我遇到的问题是试图找出如何使用播放器标记更新图像。

你可以......

使用JPanel并覆盖它paintComponent以渲染图像和播放器移动/标记。

然后,您可以向其添加MouseListener并监控鼠标点击次数。

无论您使用哪种方法,我都可能会创建List RectanglemousePressed来代表用户可以点击的热点。每次调用Rectangle#contains(Point)时,我都会走这个列表并使用{{1}},通过鼠标点击点来确定点击了哪个热点。

然后,您可以将其与游戏模型进行比较,以确定它是否有效,并根据需要采取适当的措施。

请查看How to write a Mouse ListenerPerforming custom painting了解详情

答案 1 :(得分:2)

在4x4(?)JToggleButton中使用16(?)GridLayout个对象。

敲开空间&在Add a complex image in the panel, with buttons around it in one customized user interface的答案中看到的按钮背景。

相关:如何使用

方法的优点

  • 无需extend任何组件。我们可以使用布局,按钮和容器的'vanilla'版本。这有利于构成而不是继承。
  • 可以通过更改按钮的图标来表示游戏的逻辑。 GUI将根据需要进行更新。
  • 它保存编码所有逻辑以检测单击的图像。添加ActionListener按钮将响应鼠标焦点/单击或键盘焦点/操作。

答案 2 :(得分:0)

为什么要为图像添加鼠标监听器?如果您的类实现了mouselistener,您可以告诉您在单击鼠标或其他任何内容时要执行的操作。看一看:

public class Test extends JPanel implements MouseListener {
        .
        .
        .
    @Override
    public void mouseClicked(MouseEvent arg0) {
        // TODO Auto-generated method stub          
    }

    @Override
    public void mouseEntered(MouseEvent arg0) {
        // TODO Auto-generated method stub          
    }

    @Override
    public void mouseExited(MouseEvent arg0) {
        // TODO Auto-generated method stub          
    }

    @Override
    public void mousePressed(MouseEvent arg0) {
        // TODO Auto-generated method stub          
    }

    @Override
    public void mouseReleased(MouseEvent arg0) {
        // TODO Auto-generated method stub          
    }
}