[英]Drawing oval in canvas using swing
我是Java新手,使用paintComponent方法绘制椭圆形时遇到问题。 我发现了许多类似的线程,但是所有的灵魂都不起作用。 我的代码:
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);
}
}
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);
}
}
为什么它不起作用以及如何使此代码起作用?
JPanel
使用FlowLayout
遵循首选大小,但是Dot
组件的默认大小太小而看不到。 您需要使用使用最大可用面积的布局管理器,或者覆盖getPreferredSize
。 记住在调用JFrame#setVisible
之前先调用pack
jpanel.setLayout(new BorderLayout());
或者,您可以在构造函数中设置首选大小:
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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.