Java 将对象内部的ImageIcon添加到另一个类中的帧

Java 将对象内部的ImageIcon添加到另一个类中的帧,java,swing,user-interface,Java,Swing,User Interface,因此,从dog对象绘制组件的方法将添加到JFrame或JPanel中 这是正确的方法还是需要调用repaint()函数 这是正确的方法还是需要调用repaint()函数 不幸的是,这不是正确的方法。paintComponent(g)应该被覆盖。您需要将Dog类扩展到JComponent或JComponent的子类之一,然后重写paintComponent(g): 但是如果您只想创建一个可以通过自定义绘制绘制的狗对象,则不需要使用paintComponent()方法。您可以简单地为它创建一个dra

因此,从dog对象绘制组件的方法将添加到JFrame或JPanel中

这是正确的方法还是需要调用repaint()函数

这是正确的方法还是需要调用repaint()函数

不幸的是,这不是正确的方法。
paintComponent(g)
应该被覆盖。您需要将Dog类扩展到JComponent或JComponent的子类之一,然后重写
paintComponent(g)

但是如果您只想创建一个可以通过自定义绘制绘制的狗对象,则不需要使用
paintComponent()
方法。您可以简单地为它创建一个
draw()
方法:

class Dog extends JComponent{
    @Override
    paintComponent(Graphics g){
        //your codes..
    } 
}
当您想在画布或面板中绘制狗时:

class Dog{

    private ImageIcon image;

    public Dog(){
        java.net.URL imgUrl = getClass().getResource("dog.jpg");
        image= new ImageIcon(imgUrl);
    }

    public void draw(Graphics g){
        g.drawImage(image.getImage(), x, y, width, height, null);
    }

}
这是正确的方法还是需要调用repaint()函数

不幸的是,这不是正确的方法。
paintComponent(g)
应该被覆盖。您需要将Dog类扩展到JComponent或JComponent的子类之一,然后重写
paintComponent(g)

但是如果您只想创建一个可以通过自定义绘制绘制的狗对象,则不需要使用
paintComponent()
方法。您可以简单地为它创建一个
draw()
方法:

class Dog extends JComponent{
    @Override
    paintComponent(Graphics g){
        //your codes..
    } 
}
当您想在画布或面板中绘制狗时:

class Dog{

    private ImageIcon image;

    public Dog(){
        java.net.URL imgUrl = getClass().getResource("dog.jpg");
        image= new ImageIcon(imgUrl);
    }

    public void draw(Graphics g){
        g.drawImage(image.getImage(), x, y, width, height, null);
    }

}

@你可以看看我的解决方案,它可能是你想要的。@你可以看看我的解决方案,它可能是你想要的。