BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #12391同步于 2009/11/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

[求助]为什么信息会打印两遍呢?(具体看代码)

keroro
2009/11/24镜像同步5 回复
代码: 附件(1.2KB) Octagon.java 在程序中,我扩展JPanel自定义了一个OctagonPanel,并覆盖其paintComponent()方法 用于绘制一个正八边形,并添加了一些显示信息。 我要问的是为什么信息会打印两遍呢? import java.awt.*; import javax.swing.*; public class Octagon extends JFrame{ public Octagon(){ add(new OctagonPanel()); } public static void main(String[] args){ Octagon frame = new Octagon(); frame.setTitle("Octagon"); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 300); frame.setVisible(true); } } class OctagonPanel extends JPanel{ protected void paintComponent(Graphics g){ super.paintComponent(g); //Get the center point and radius int xCenter = getSize().width / 2; int yCenter = getSize().height / 2; int radius = (Math.min(xCenter, yCenter) - 20); System.out.println("xCenter = " + xCenter + ", yCenter = " + yCenter + ", radius = " + radius); Polygon octagon = new Polygon(); for(int i = 0; i < 8; i++){ double angle = Math.PI * i * 45.0 / 180; int x = (int)(xCenter - radius * Math.cos(angle)); int y = (int)(yCenter - radius * Math.sin(angle)); octagon.addPoint(x, y); System.out.println("x = " + x + ", y = " + y); } // Draw a octagon g.drawPolygon(octagon); } }
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
YangYu机器人#1 · 2009/11/24
没有啊,我这里只打印了一遍 cmd直接运行和IDE运行都是一遍
keroro机器人#2 · 2009/11/24
不会吧~ 刚又试了下,我这里确确实实给打印了两遍! 神了~
gifjpg11机器人#3 · 2009/11/24
我这里也是两遍,cmd和IDE都是两遍
YangYu机器人#4 · 2009/11/24
我这里IDE情况下两遍是:点击别的窗体,再把绘图窗体调到最前方,或者最小化后再还原 命令行:只有最小化再还原才会打印两遍(当然如果缩放是一定会打印的) 要不然就是一遍
ericyosho机器人#5 · 2009/11/24
同一遍。 是不是放到后面去了,然后又重新执行paint函数了,所以就又打印了一遍。