jframe为什么JAVA paint()方法不起作用?
有人能解释一下为什么这个代码没有显示一个20 x 20的白色椭圆形吗? 我添加了评论,所以你不必搜索太多。我想我在绘画方法上做错了什么。还是别的什么? 代码如下:
public class Dodge extends JFrame{ //EXTENDED JFRAME
public Dodge(){
JPanel panel = new JPanel();
//
panel.setBackground(Color.BLACK); //
//
add(panel); //
setTitle("Dodging game"); //
setDefaultCloseOperation(EXIT_ON_CLOSE); // GUI SETUP
setSize(500, 400); //
setLocationRelativeTo(null); //
setResizable(true); //
}
public void paint(Graphics g){
g.setColor(Color.BLACK);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.WHITE); //THIS METHOD SHOULD GIVE ME AN OVAL
g.fillOval(5, 5, 20, 20);
repaint();
}
public static void main(String[] args){ //
SwingUtilities.invokeLater(new Runnable() { // MAIN THREAD
@Override //
public void run() {
new Dodge().setVisible(true); //
我是个初学者,所以请弄清楚是怎么回事
另外,请解释一下,当我还没有调用它时,这个方法是如何导致程序发生变化的
# 1 楼答案
当呈现组件时,会自动调用
paint()
方法您的椭圆形不会显示,因为它隐藏在框架或标题栏的工具栏后面。(你管它叫什么名字,排在第一位)
将圆角改为
g.fillOval(50, 50, 20, 20);
,你就会看到它此外,如果您要重写
super.paint(g)
,您应该始终调用它另外,不要从
paint()
方法调用repaint()