当前位置: 首页 > 面试题库 >

如何在Java中的非数组网格中填充正方形?

濮阳研
2023-03-14
问题内容

我正在用Java做像素艺术制作者。我做了一个看起来像这样的网格:

public void paint(Graphics g) {
  int rows = 20;

  int cols = 20;
  int width = getSize().width;
  int height = getSize().height;

  // draw the rows
  int rowHt = height / (rows);
  for (int i = 0; i < rows; i++)
    g.drawLine(0, i * rowHt, width, i * rowHt);

  // draw the columns
  int rowWid = width / (cols);
  for (int i = 0; i < cols; i++)
    g.drawLine(i * rowWid, 0, i * rowWid, height);

}

现在,我想添加点击填充区域功能。我不知道如何填充它,因为它不是构成网格的数组…

任何建议都非常感谢!


问题答案:

绘画方法应仅绘画,而不设置类的属性。例如,您应该将行/列设置为属性,然后也具有“ gridSize”属性。

那么该面板的首选大小将是:

@Override
public Dimension getPreferredSize()
{
    return new Dimension(columns * gridSize, rows * gridSize);
}

这很重要,因为您不希望在调整框架大小时动态更改rowHeight和columnWidth。

现在您有了固定大小的网格,可以将MouseListener添加到面板中,并使用ArrayList来跟踪应填充的单元格。在一个简单的实现中,可以使用Point对象的ArrayList。点将代表您单击的单元格。

因此,例如,如果MouseEvent中的点为(33,56)并且gridSize为10,则Point对象将为:

Point cell = new Point(event.getX() / gridSize, event.getY() / gridSize);

将此“单元”对象添加到您的ArrayList。

然后,在paintComponent()方法中,遍历数组以获取每个点对象,然后计算出在fillRect(…)绘画方法中使用的x / y / width
/ height值:

int x = cell.x * gridSize;
int y = cell.y * gridSize;
graphics.fillRect(x, y, gridSize, gridSize);


 类似资料:
  • 问题内容: 我知道该怎么做,但是我发誓您可以像[[0] = {0,0,0,0};那样填写;你是怎么做到的?我确实尝试过Google,但没有任何帮助。 问题答案: 您也可以将其作为声明的一部分:

  • 问题内容: 我正在编写一个从整数n创建2D数组的程序。然后,我必须用从1到n n数组大小的 值填充数组, 并检查它是否是一个幻方。 我现在的方式是按照从1到n n数组大小的 顺序填充 数组。我该如何随机? 我的代码: 问题答案: 创建一个随机的数字列表以添加到您的数组中,如下所示:

  • 假设我有一个整数数组,如和一个简单的字符串,如。我如何循环通过数组和填充每一个值。假设是这样的: 输出: 到目前为止,我已经尝试了以下内容: 但是,它在print语句中给出了。解决这个问题最好的方法是什么?

  • Arrays 类提供了一个 fill() 方法,可以在指定位置进行数值填充。fill() 方法虽然可以填充数组,但是它的功能有限制, 只能使用同一个数值进行填充。语法如下: 其中,array 表示数组,value 表示填充的值。 例 1 声明一个 int 类型的 number 数组,然后通过 for 语句进行遍历,在该语句中调用 Arrays 类的 fill() 方法来填充数组,并输出数组中元素的

  • 现在,我当前的渲染代码如下: 着色器: 假设我想像JavaAWT一样,成功地填充这个形状。。。我该怎么做?(已经尝试使用GL_多边形,但它只填充整个O,我有一个填充圆,而不是O。也尝试使用jogamp glu的部分,但它只是没有渲染任何东西,不知道为什么)

  • 我试图在javaFX程序中显示一个4列网格。这就是我设置网格的方式。 我已将标签和文本字段分别放在列 1,3 和列 2,4 中。问题是文本字段和下一个标签之间存在间隙,因此减少了第二个文本字段的宽度。 我该如何解决这个问题?