当我实现界面时,我有一个问题。
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(;;;)。 怎么会?这些方法是自动调用的吗?
答案 0 :(得分:2)
您不能直接调用paintIcon
方法,当您的组件是可见用户界面的一部分时,显示管理器会发生这种情况。
就是这样,因为你把它添加到JOptionPane
。