Java 我的程序以意外的数量通过循环
正如标题澄清的那样,我的一个循环在玩弄它之后只应该通过它一次,这使得它最明显地通过了两次,有时是三次 这很奇怪,我删掉了所有让我困惑的东西,对java还是很陌生的,但它并没有改变任何东西。 因此,我现在知道这与小组有某种关系,但我一辈子也搞不清楚,可能是什么问题。我甚至删除了所有的getter和setter。不知怎的,这个循环运行了2-3次。 最初我让它画点,但在它表现出一些奇怪的行为后,我试图找出它,因为代码只是从一个在线教程,甚至尝试打破;但是没有用 这是我的密码:Java 我的程序以意外的数量通过循环,java,loops,panel,Java,Loops,Panel,正如标题澄清的那样,我的一个循环在玩弄它之后只应该通过它一次,这使得它最明显地通过了两次,有时是三次 这很奇怪,我删掉了所有让我困惑的东西,对java还是很陌生的,但它并没有改变任何东西。 因此,我现在知道这与小组有某种关系,但我一辈子也搞不清楚,可能是什么问题。我甚至删除了所有的getter和setter。不知怎的,这个循环运行了2-3次。 最初我让它画点,但在它表现出一些奇怪的行为后,我试图找出它,因为代码只是从一个在线教程,甚至尝试打破;但是没有用 这是我的密码: public class
public class drawDot extends JPanel {
//GetterSetter gs = new GetterSetter();
public void paintComponent(Graphics g) {
//super.paintComponent(g);
//Graphics2D g2d = (Graphics2D) g;
//g2d.setColor(Color.black);
// Random r = new Random();
for (int i = 0; i <= 0;i++) {
// int y = 50;
//g2d.fillOval(gs.getX(), y, 30, 30);
// gs.setX(gs.getX()+30);
System.out.println("30");
break;
}
}
public static void main(String[] args) {
drawDot points = new drawDot();
JFrame frame = new JFrame("Points");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(points);
frame.setSize(250, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
无论何时重新绘制JPanel,它都会调用paintComponent。它可以在程序执行期间多次重新绘制 您可以在类中创建一个静态变量paintCounter,然后将其与循环索引一起在循环中打印出来,以查看在单次调用paintComponent期间循环运行了多少次
private static paintCounter = 0;
public void paintComponent(Graphics g) {
paintCounter = paintCounter + 1;
for (int i = 0; i < 1; i++) {
System.out.println("30");
System.out.println("PaintComponent called " + paintCounter + " times, loop index " + i);
}
}
为什么要对只需要执行一次的内容使用循环?每次Swing调用paintComponent方法时,循环都会运行一次。Swing在认为必须重新绘制组件时调用paintComponent,如果您的程序运行较长时间,可能会调用数百次。谢谢!因此,油漆组件就是问题所在。Thx^^^另外:它只循环一次,因为我试图将问题简化到其根源,包括将循环减少到1。