我是java的新手,需要帮助才能完成这项工作。我试过paintComponent、super等等。我不明白我做错了什么。我只是想做一个简单的圆圈。我最初尝试了不同的课程,但现在只选择了一个。
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Main extends JPanel{
private static final long serialVersionUID = 1L;
private JFrame frame;
private JPanel panel;
public Main() {
frame = new JFrame();
panel = new JPanel();
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("shotergame");
panel.setPreferredSize(new Dimension(1000, 600));
frame.pack();
frame.setVisible(true);
frame.setLocationRelativeTo(null);
}
@Override
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.RED);
g2d.drawOval(100, 100, 50, 50);
g2d.fillOval(100, 100, 50, 50);
}
public static void main(String[] args) {
new Main();
}
}
Main
是要添加到JFrame
的JPanel
panel
实例什么都不做,应该去掉它,在构造函数中使用this
实例。
public class Main extends JPanel {
private static final long serialVersionUID = 1L;
private JFrame frame;
public Main() {
frame = new JFrame();
frame.add(this); // Add "this" instance
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("shotergame");
// Set preferred size to "this" instance
setPreferredSize(new Dimension(1000, 600));
frame.pack();
frame.setVisible(true);
frame.setLocationRelativeTo(null);
}
(...)
}