我尝试了所有方法,但我似乎无法在 jframe 中绘制一些东西



我是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是要添加到JFrameJPanel
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);
}
(...)
}

最新更新