drawOval的意外行为

时间:2016-01-23 11:26:44

标签: java swing java-2d

我在使用drawOval函数时遇到问题。我用它画圆圈但结果看起来不像圆圈。 我认为这种行为发生在Jpanel的某个高度之后。 向下滚动直到结束,您可以得到如下图所示的结果。 有人可以为此提供解释吗?

Result after Execute the sample program

import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

public class TestMain
{
    public static void main(String[] args)
    {
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JScrollPane jsp = new JScrollPane();
        jsp.setViewportView(new TestPanel());
        f.getContentPane().add(jsp);
        f.setSize(500,400);
        f.setLocation(200,200);
        f.setVisible(true);
    }
}

class TestPanel extends JPanel
{
    public TestPanel()
    {
        setPreferredSize(new Dimension(1960 , 77660240));
        setBackground(Color.white);
    }

    protected void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D)g;
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                            RenderingHints.VALUE_ANTIALIAS_ON);
        g2.drawRect(30, 77660141, 100, 20);
        g2.drawOval(15, 77660141, 10, 10);
        g2.draw(new Ellipse2D.Double(140, 77660141,
                             10,
                             10));
        g2.draw(new Ellipse2D.Double(160, 77660141,
                             10,
                             10));
        g2.draw(new Ellipse2D.Double(180, 77660141,
                             10,
                             10));
        g2.draw(new Ellipse2D.Double(200, 77660141,
                             30,
                             30));
    }
}

1 个答案:

答案 0 :(得分:0)

将面板的尺寸更改为更合理的,例如:1000,它将正常工作。