Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JLabel阵列与Graphics2D绘画_Java_Arrays_Swing_Graphics_Jlabel - Fatal编程技术网

Java JLabel阵列与Graphics2D绘画

Java JLabel阵列与Graphics2D绘画,java,arrays,swing,graphics,jlabel,Java,Arrays,Swing,Graphics,Jlabel,我必须为我的CS课程最终项目创建一个带有GUI的connect 5游戏。我在上一个项目“迷宫”中使用了Graphics2D,使用Graphics2D简直是一场噩梦。connect5板最多为20x20,面积为400。我想知道创建一个包含400个JLabel的数组来处理GUI会对性能产生什么影响,因为在边界内确定鼠标点击、获取数组诱导、更改空间颜色以及其他类似操作都很容易,而使用Graphics2D进行同样的操作要困难得多。所以,我的总体问题是:创建这么多jlabel的数组是不可取的吗?如果是,我还

我必须为我的CS课程最终项目创建一个带有GUI的connect 5游戏。我在上一个项目“迷宫”中使用了Graphics2D,使用Graphics2D简直是一场噩梦。connect5板最多为20x20,面积为400。我想知道创建一个包含400个JLabel的数组来处理GUI会对性能产生什么影响,因为在边界内确定鼠标点击、获取数组诱导、更改空间颜色以及其他类似操作都很容易,而使用Graphics2D进行同样的操作要困难得多。所以,我的总体问题是:创建这么多jlabel的数组是不可取的吗?如果是,我还有什么其他选择?谢谢大家

我认为JLabel方法是不可取的,我认为一个带有自定义绘制的组件更可取,因为它看起来更容易一些

如果抽象格式的类没有绑定到UI或任何东西(即使在命令行上也可以播放,在命令行中可以以文本形式输出电路板的表示),那么在表示电路板的空间中循环并进行一小组绘图调用以绘制每个插槽(空或不空)应该很简单


如果您想引入一些动画,比如碎片掉落,然后在撞击下面的碎片时会碰撞一段时间,那么您最好这样做。

那么当您说“绘图调用集”时,绘图调用的确切含义是什么?画画有什么方法吗?我所知道的唯一一种绘画方式是通过凌驾于绘画组件之上,我觉得这可能是我在UI方面的主要问题。也许还有更通用的方法?通过绘图调用,我指的是Graphics2D对象附带的绘图方法,最好是在重写的paintComponent中。如果你知道怎么做,你应该保持良好的状态。创建一个扩展JComponent的自定义组件,创建一个接受Connect5Board对象的构造函数,或者在paintComponent方法中通过Connect5板的表示循环,并逐个绘制片段或空插槽。使用getWidth和getHeight等方法了解必须绘制的空间大小,以便限制绘制插槽的大小。您甚至可以向组件添加鼠标侦听器,当您在特定列中单击时,您可以修改Connect5Board对象以在该列中放置一块,切换轮到谁,还有你需要做的任何事情。为什么不试试看会发生什么。创建一个包含400个标签的数组不是什么大问题在边界内确定鼠标点击很容易。我同意,因为你可以在每个标签上添加相同的鼠标听写器。