gpt4 book ai didi

java - 将对象内部的 ImageIcon 添加到另一个类中的框架

转载 作者:太空宇宙 更新时间:2023-11-04 12:46:46 25 4
gpt4 key购买 nike

public class Dog {

public void paintComponent(Graphics g) {
super.paintComponent(g);
ImageIcon image = new ImageIcon("dog.jpg");
image.paintIcon(this,g,200,0);
}

public class Gui extends JFrame {
Frame frame = new Frame();
Dog dog = new Dog();
frame.add(dog.paintComponent(??));
}
}

因此狗对象的绘制组件的方法将被添加到 JFrame 或 JPanel 中。

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

最佳答案

IS this the right way of going about it or do you need to call the repaint() function

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

class Dog extends JComponent{
@Override
paintComponent(Graphics g){
//your codes..
}
}

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

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);
}

}

当您想在 Canvas 或面板中绘制时:

public class DrawingSpace extends JPanel
{
private Dog dog;

public DrawingSpace(){
dog = new Dog();
}

@Override
protected void paintComponent(Graphics g){
super.paintComponent(g);
dog.draw(g); //will invoke Dog's draw method and draw a dog
}
}

关于java - 将对象内部的 ImageIcon 添加到另一个类中的框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36249046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com