有一个常见的原因为什么paint()方法可能会被无意调用两次。我有以下代码:
public void paint(Graphics g)
{
//Graphics2D gg;
//gg=(Graphics2D) g;
drawMatrix(g);
}
private void drawMatrix(Graphics g) {
int side = 40;
hex hexagon=new hex();
for(int i = 0; i<9; i++)
for(int k = 0; k<9; k++){
g.setColor(Color.lightGray);
g.fill3DRect(i*side,k*side, side, side, true);
if (matrix[i][k]!=null){System.out.println("i is "+i+" k is "+k);
g.setColor(Color.black);hexagon.DrawHexfromMatrix(g, i, k, Color.black);}
}
}
hex是扩展多边形的类(用于建模六边形图形),而DrawHexfromMatrix是从绘制的矩阵的索引绘制六边形的函数(将六边形放入矩阵的槽中)。如果您认为有帮助,我可以提供整个代码,但是现在我不明白为什么system.out.println会执行两次。(例如,if
[1] [2]和[2] [3]不能执行null它将打印:
i is 1 k is 2
i is 2 k is 3
i is 1 k is 2
i is 2 k is 3
我认为这也会影响我的绘图,因为有时虽然[i] [k]中存在一个元素,但并未绘制。(矩阵是十六进制的矩阵)。
以后的编辑:是否有可能g.fill3DRect(i * side,k * side,side,side,true);
覆盖我正在尝试用hexagon.DrawHexfromMatrix(g,i,k,Color.black)绘制的六边形; ???
首先,您不应该直接在上绘画JApplet
。
您应该定义一个JPanel
添加到中的JApplet
。你画到了JPanel
。
其次,您应该使用该paintComponent()
方法,并调用超级类行为,如下所示。
protected void paintComponent(Graphics g) {
// Paint the default look.
super.paintComponent(g);
// Your custom painting here.
g.drawImage(foregroundImage, x, y, this);
}
第三,您无法控制Swing何时触发该paintComponent()
方法。您应该使用其他方法进行计算,并将代码限制paintComponent()
为实际的绘制方法。
问题内容: 我在Go中关注一个简单的Web服务器示例。 我插入了一条语句,使生成的代码如下所示: 问题是,每当我在Web浏览器中加载端口8000时,此函数就会被调用两次。这是一个问题,因为我打算在每次页面访问时增加一个计数器。通过这种行为,计数器将增加两次。OTOH,如果我这样做,它只会被调用一次。 我觉得我在这里失踪真的很愚蠢。 问题答案: 只需记录请求。您将意识到您的浏览器还请求/favico
在我的应用程序中,我将TextWatcher放在EditText上。当我更改EditText的文本时,TextWatcher的事件会被调用两次。 我正在使用模拟器来运行应用程序。
编辑:由于代码剪贴不会重现错误-这里有一个指向github repo的链接:(代码远未完成) https://github.com/altruios/clicker-game 我现在已经在两台计算机上运行了它——这两台计算机都有相同的行为,而代码剪报并没有显示出来。 因此,我正在构建一个clicker游戏来学习react,我不明白为什么这段代码会以这种方式运行: 在主应用程序中,我有以下功能: 那
我将Ionic3与一个一起使用。我有下面的函数,出于某种原因,即使该函数只被调用一次,第三行也会被触发两次。 问题 这引起了一个问题,因为正在获取第二个订阅的值,并且第一个订阅丢失,不允许我取消订阅。 问题 如何创建一个只有一个订阅的
问题内容: 我有一个想法,可能是因为我正在做一些样式设计来更改单选按钮,但是我不确定。我正在设置一个onClick事件,该事件两次调用了我的函数。我已删除它以确保它没有在其他地方被触发,并且onClick似乎是罪魁祸首。 我的功能目前仅是运输选项的简单控制台日志: 如果没有任何理由可以在这里看到为什么会发生这种情况,我可以发布其余代码,但是有很多方面,我认为这与之无关,但是我认为这是一个很好的起点
我正在开发一个应用程序使用Android4.0IC和碎片。 考虑ICS4.0.3(API level 15)API的演示示例应用程序中的修改示例: }