2015-03-29 2 views
0

Я занимаюсь использованием Icon и myIcon, и я получаю сообщение об ошибке, указывающее, что myIcon должен быть определен в собственном файле. Я уверен, что я определил его в коде и смущен тем, что я сделал неправильно.Использование Icon и myIcon

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

public class TestIcon { 
    public static void main(String[] args) { 
     myIcon icn = new myIcon(40,50); 
     JOptionPane.showMessageDialog(null, "Hello World!", "Message", JOptionPane.INFORMATION_MESSAGE, icn); 
    } 
} 

public class myIcon implements Icon{ 
    private int width; 
    private int height; 

    public myIcon(int width, int height) { 
     this.width=width; 
     this.height=height; 
    } 
    public int getIconWidth(){ 
     return width; 
    } 
    public int getIconHeight(){ 
     return height; 
    } 
    public void paintIcon(Component c, Graphics g, int x, int y){ 
     Graphics2D g2 = (Graphics2D) g; 
     Ellipse2D.Double ellipse = new Ellipse2D.Double(x,y,width, height); 

     g2.setColor(Color.RED); 
     g2.fill(ellipse); 
    } 
} 
+0

Удалите последний '}' под 'TestIcon' и поместите его в конец файла, так что' myIcon' находится в 'TestIcon', делая его внутренним классом. Затем вам нужно будет определить 'myIcon' как' static' – MadProgrammer

+0

@MadProgrammer. Я попробовал это, и я получаю сообщение об ошибке, поскольку нет закрывающего экземпляра myIcon. –

ответ

0

Либо переместите myIcon в его собственном файле или сделать myIcon внутренний класс TestIcon, к примеру ...

import java.awt.Color; 
import java.awt.Component; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.geom.Ellipse2D; 
import javax.swing.Icon; 
import javax.swing.JOptionPane; 

public class TestIcon { 

    public static void main(String[] args) { 
     myIcon icn = new myIcon(40, 50); 
     JOptionPane.showMessageDialog(null, "Hello World!", "Message", JOptionPane.INFORMATION_MESSAGE, icn); 
    } 

    public static class myIcon implements Icon { 

     private int width; 
     private int height; 

     public myIcon(int width, int height) { 
      this.width = width; 
      this.height = height; 
     } 

     public int getIconWidth() { 
      return width; 
     } 

     public int getIconHeight() { 
      return height; 
     } 

     public void paintIcon(Component c, Graphics g, int x, int y) { 
      Graphics2D g2 = (Graphics2D) g; 
      Ellipse2D.Double ellipse = new Ellipse2D.Double(x, y, width, height); 

      g2.setColor(Color.RED); 
      g2.fill(ellipse); 
     } 
    } 

} 

внутренний класс накладывает некоторые ограничения, поэтому в зависимости от того, что вы хотите сделать , будет зависеть от того, что вы делаете.

+0

Спасибо. Это помогает тонну! –

 Смежные вопросы

  • Нет связанных вопросов^_^