接口方法执行

时间:2014-11-24 09:11:40

标签: java 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(;;;)。 怎么会?这些方法是自动调用的吗?

1 个答案:

答案 0 :(得分:2)

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

就是这样,因为你把它添加到JOptionPane