使用秋千在画布上绘制椭圆形

时间:2014-04-25 18:01:47

标签: java swing canvas graphics awt

我是Java的新手,我在使用paintComponent方法绘制椭圆时遇到问题。我找到了许多类似的线程,但没有一个灵魂有效。我的代码:

RacerMain.java

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

public class RacerMain {
    public static void main (String[]args) {
        //MainFrame mf = new MainFrame();
        JFrame jframe = new JFrame();
        JPanel jpanel = new JPanel();
        jframe.setSize(480,640);
        jframe.add(jpanel);
        jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jpanel.add(new Dot());
        jframe.setVisible(true);
    }

}

Dot.java

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

public class Dot extends JComponent{
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D)g;
        g2d.setColor(Color.BLUE);
        g2d.fillOval(20, 20, 20, 20);
    }
}

为什么它不起作用以及如何使这段代码有效?

2 个答案:

答案 0 :(得分:2)

JPanel使用尊重首选尺寸的FlowLayoutDot组件的默认尺寸太小而无法看到。您需要使用使用可用最大区域的布局管理器或覆盖getPreferredSize。在致电pack

之前,请务必致电JFrame#setVisible
jpanel.setLayout(new BorderLayout());

答案 1 :(得分:-1)

或者您可以在构造函数中设置首选大小:

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

public class Dot extends JComponent {
    public Dot() {
        setPreferredSize(new Dimension(480, 640));
    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.setColor(Color.BLUE);
        g2d.fillOval(20, 20, 20, 20);
    }
}
相关问题