我正在努力学习用摇摆画画。我正在尝试创建一个圆圈并将其放置在JPanel中的特定位置。这就是我想出来的,但它没有显示任何数字:
import java.awt.*;
import javax.swing.*;
public class Circles extends JPanel {
private static final long serialVersionUID = 1L;
public Circles(){
setBackground(Color.white);
setPreferredSize(new Dimension(300, 300));
}
public void paintComponent(Graphics g){
super.paintComponents(g);
g.setColor(Color.black);
g.drawRect(10, 10, 50, 50);
}
}
这是启动程序的类。
import java.awt.*;
import javax.swing.*;
public class StartCircles extends JFrame{
private static final long serialVersionUID = 1L;
private Circles circle;
public StartCircles(){
Container c = getContentPane();
circle = new Circles();
c.setBackground(Color.white);
c.setLayout(new FlowLayout());
setSize(300, 300);
c.add(circle);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args){
StartCircles c1 = new StartCircles();
}
}
我做错了什么?如何将图形定位在我想要的位置?
答案 0 :(得分:3)
您的代码运行完美,但您在这里绘制矩形。 所以如果你想绘制圆圈,你必须使用
以下方法之一
g.fillOval(10, 10, 50, 50);
g.drawOval(10, 10, 50, 50);
答案 1 :(得分:3)
试试此SSCCE - 注意来源中的评论。
import java.awt.*;
import javax.swing.*;
public class StartCircles extends JFrame{
private static final long serialVersionUID = 1L;
private Circles circle;
public StartCircles(){
Container c = getContentPane();
circle = new Circles();
c.setBackground(Color.white);
c.setLayout(new FlowLayout());
//setSize(300, 300);
c.add(circle);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack(); // size the GUI to the components within it
}
public static void main(String[] args){
StartCircles c1 = new StartCircles();
}
}
class Circles extends JPanel {
private static final long serialVersionUID = 1L;
public Circles(){
setBackground(Color.white);
setPreferredSize(new Dimension(300, 300));
}
public void paintComponent(Graphics g){
//super.paintComponents(g); // WRONG METHOD!
super.paintComponent(g);
g.setColor(Color.black);
g.drawRect(10, 10, 50, 50);
}
}
答案 2 :(得分:2)
g.drawRect(10, 10, 50, 50);
一定会给你一个矩形。您需要查看有关如何绘制圆的文档。
您需要使用drawOval()
绘制它。它需要4个参数:
x - 要绘制的椭圆的左上角的x坐标 y - 要绘制的椭圆的左上角的y坐标 width - 要绘制的椭圆的宽度 height - 要绘制的椭圆的高度。
因此,请将drawRect()
替换为drawOval()