Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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绘制方阵_Java_Matrix - Fatal编程技术网

用Java绘制方阵

用Java绘制方阵,java,matrix,Java,Matrix,我正在练习Java swing。我已经创建了一个矩阵作为矩形2D对象的2D数组。我已经设置了鼠标器来画被点击的正方形。我已经设置了for循环,用于检查单击了哪个方块。当我点击一个正方形时,它被涂成了蓝色。问题是,当我点击另一个方块时,第一个变成白色,另一个变成蓝色。我的问题是,如何保持第一次单击的正方形的颜色 这是MatricaMatrix classIt的代码,在我的母语中,crtanjeMatrice表示drawMatrix,duzina表示长度 当前正在使用绘制方法绘制单个矩阵单元: 但是

我正在练习Java swing。我已经创建了一个矩阵作为矩形2D对象的2D数组。我已经设置了鼠标器来画被点击的正方形。我已经设置了for循环,用于检查单击了哪个方块。当我点击一个正方形时,它被涂成了蓝色。问题是,当我点击另一个方块时,第一个变成白色,另一个变成蓝色。我的问题是,如何保持第一次单击的正方形的颜色

这是MatricaMatrix classIt的代码,在我的母语中,crtanjeMatrice表示drawMatrix,duzina表示长度


当前正在使用绘制方法绘制单个矩阵单元:

但是您需要记住单击了哪些矩形。为此,可以使用一个简单的列表来存储已单击矩形的索引。基于Point类的类提供了在列表中存储行-列索引信息的好方法

@Override
protected void paintComponent(Graphics g) {
   super.paintComponent(g);
   Graphics2D g2 = (Graphics2D) g;
   g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
   g2.clearRect(0, 0, this.getWidth(), this.getHeight());
   crtanjeMatrice(g2);
   for (MyRowColumn index : indexList) { // MyRowColumn based on Point
     g2.setColor(Color.blue);
     g2.fill(matrica[index.x][index.y]);
   }
}

旁白:,不要使用覆盖绘制,而是覆盖paintComponent,记住调用super.paintComponent来渲染子组件。

可以发布代码的相关部分吗?可以显示一些这样做的代码吗?否则,解决方案是将单击时的颜色存储到临时变量中。
g2.fill(matrica[a][b]);
@Override
protected void paintComponent(Graphics g) {
   super.paintComponent(g);
   Graphics2D g2 = (Graphics2D) g;
   g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
   g2.clearRect(0, 0, this.getWidth(), this.getHeight());
   crtanjeMatrice(g2);
   for (MyRowColumn index : indexList) { // MyRowColumn based on Point
     g2.setColor(Color.blue);
     g2.fill(matrica[index.x][index.y]);
   }
}