gpt4 book ai didi

java - 接口(interface)方法执行

转载 作者:行者123 更新时间:2023-12-02 05:14:15 25 4
gpt4 key购买 nike

我在实现接口(interface)时遇到一个问题。

import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

/**
An icon that has the shape of the planet Mars.
*/
public class MarsIcon implements Icon
{
/**
Constructs a Mars icon of a given size.
@param aSize the size of the icon
*/
public MarsIcon(int aSize)
{
size = aSize;
}

public int getIconWidth()
{
return size;
}

public int getIconHeight()
{
return size;
}

public void paintIcon(Component c, Graphics g, int x, int y)
{
Graphics2D g2 = (Graphics2D) g;
Ellipse2D.Double planet = new Ellipse2D.Double(x, y,
size, size);
g2.setColor(Color.RED);
g2.fill(planet);
}

private int size;
}

import javax.swing.*;

public class IconTester
{
public static void main(String[] args)
{
JOptionPane.showMessageDialog(
null,
"Hello, Car!",
"Message",
JOptionPane.INFORMATION_MESSAGE,
new MarsIcon(100));
System.exit(0);
}
}

在 IconTester 中,我只创建了一个 MarsIcon(100)。我还没有调用该方法。但似乎 PaintIcon(;;;) 被执行了。怎么会?这些方法是自动调用的吗?

最佳答案

您不直接调用 paintIcon 方法,当您的组件是可见 UI 的一部分时,显示管理器会发生这种情况。

它就在这里,因为您已将其添加到 JOptionPane 中。

关于java - 接口(interface)方法执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27101243/

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