当前位置: 首页 > 知识库问答 >
问题:

递归地创建20x20网格JPanel(每个网格框中的JPanels)但引用每个框?

许出野
2023-03-14

简单地说,我试图创建一个20x20的方格,要么全黑,要么全白,模仿像素。我知道如何递归地创建网格,这样我就没有400个变量(就像一个接一个地添加400个JPanels一样),我只是不知道我以后如何引用一个特定的框来改变颜色状态。

我正在考虑(在jPanel上)有一个白色背景,上面画一条网格线。然后创建一个20x20GridLayout的JPanel并使用一个给定特定输入(例如18x9)的方法,它将在该网格处添加一个黑色的JPanel。

我在这方面的思路正确吗?无论如何,我将继续讨论它,但也许一些指针会有所帮助,因为我还是Java的新手。或者我可以用别的方法来代替?有人告诉我放弃swing,转而使用JavaFX(尽管它实现了swing),因为它的通用性更强,但我还没有准备好走那么远。

谢谢!

编辑:我想我应该提到这不是一个‘可编辑’的输出。换种说法,它会画一次。所以我不需要担心隐藏面板,因为我将开始一个新的输出。

共有1个答案

孟思远
2023-03-14

我只是不确定我以后如何引用一个特定的框来改变颜色状态。

只需将对网格中添加到ArrayList中的所有组件的引用保留到ArrayList中即可。

有一种给出某种输入的方法(如18x9)

int index = (18 * 9) - 1;
JPanel panel = list.get(index);
panel.setBackground(...);
 类似资料:
  • 我想找到获得单元格中许多元素的列和行索引的最佳解决方案。 比如我有GridPane(15x15)。每个单元格都有按钮组件。当mouseClicked事件被指示时,我想获取行和列的索引。我知道如何手动操作: 但我的问题是:15x15网格窗格。声明每个按钮并为每个组件复制相同的代码是无效的。有人知道怎么做吗? //============================================

  • 问题内容: 我想从表中的数据创建json。表看起来像这样: 我正在使用FOR JSON PATH,这很不错: 但此查询的返回值是一行中的三个串联的json: 我需要每一行都是一个单独的json,像这样: 我正在尝试使用拆分函数(CROSS APPLY),该函数需要使用分隔符作为参数,但这不是一个可靠的解决方案,因为json可以进一步扩展或分支,并且可以不分离整个json,而是分离json内部的js

  • 在上两节中,我们学习了如何创建几何形状与材质,而网格的创建非常简单,只要把几何形状与材质传入其构造函数。最常用的物体是网格(Mesh),它代表包含点、线、面的几何体,其构造函数是: Mesh(geometry, material) 下面,让我们通过一个具体的例子了解如何创建网格: 例5.1.1 var material = new THREE.MeshLambertMaterial({

  • 我需要使用extjs 4.2.1实现一个网格。这个网格将有细胞编辑插件,在列中我将有许多文本字段和组合框。 我的问题是针对特定情况的。我有一列国家/地区(例如)。列编辑器将是带有国家/地区商店的组合框。下一个组合框将是同一行索引中所选国家/地区的城市。当我定义该商店时,此列将保留在同一商店中,我不知道这一点。 在第 0 行中,我选择美国,我必须在下一个组合中加载美国城市。在第 1 行中,我选择英国

  • pre { white-space: pre-wrap; } 使用数据网格(datagrid)的详细视图,用户可以展开一行来显示附加的详细信息。 任何内容都可以加载作为行详细,子网格也可以动态加载。 本教程将向您展示如何在主网格上创建一个子网格。 步骤 1:创建主网格 <table id="dg"         url="datagrid22_getdata.php"         tit

  • pre { white-space: pre-wrap; } 属性网格(property grid)带有一个内置的 expand(展开)/collapse(合并) 按钮,可以简单地为行分组。您可以简单地创建一个可编辑属性的分层(hierarchical)列表。 设置 HTML     <table id="tt" url="propertygrid_data.json"