Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Что значит - is not an enclosing class? / 5 сообщений из 5, страница 1 из 1
29.03.2006, 13:27
    #33632142
GlukOza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что значит - is not an enclosing class?
Есть такой клас:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
 import  javax.swing.*;
 import  java.awt.*;

 public   class  EnhancedFileTester  extends  JPanel 
{
     public  EnhancedFileTester()
    {}
    
     class  AnOvalIcon  implements  Icon
    {
        Color color;

         public  AnOvalIcon(Color c)
        {
             color = c;
        }
         public   void  paintIcon(Component c, Graphics g,  int  x,  int  y)
        {
             g.setColor(color);
             g.fillRect(x, y, getIconWidth(), getIconHeight());
        }
         public   int  getIconWidth()
        {
              return   10 ;
        }
         public   int  getIconHeight()
        {
              return   15 ;
        }
    }
}

В другом классе я вызываю его:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
 public   class  IconView  extends  FileView
{
     private  HashMap hash =  new  HashMap();
     public  IconView()
    {
        hash.put("txt",  new  EnhancedFileTester.AnOvalIcon(Color.GREEN));
// Здесь код подчеркивается красным цветом и сообщает что
// EnhancedFileTester is not an enclosing class
    }
     public  String getName(File f)
    {
        String s = f.getName();
         if  (s.length() ==  0 )
        {
            s = f.getAbsolutePath();
        }
         return  s;
    }
     public  String getDescription(File f)
    {
         return  f.getName();
    }
     public  String getTypeDescription(File f)
    {
         return  f.getAbsolutePath();
    }
     public  Icon getIcon(File f)
    {
        String path = f.getAbsolutePath();
         int  pos = path.lastIndexOf('.');
         if  ((pos >=  0 ) && (pos < (path.length() -  1 )))
        {
            String ext = path.substring(pos +  1 ).toLowerCase();
             return  (Icon) hash.get(ext);
        }
         return   null ;
    }
     public   Boolean  isTraversable(File file)
    {
         return  ( new   Boolean (file.isDirectory()));
    }
}
...
Рейтинг: 0 / 0
29.03.2006, 14:16
    #33632385
Что значит - is not an enclosing class?
Чтобы создавать объекты класса EnhancedFileTester.AnOvalIcon вне EnhancedFileTester, нужно объявить EnhancedFileTester.AnOvalIcon static.
...
Рейтинг: 0 / 0
29.03.2006, 15:51
    #33632878
expp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что значит - is not an enclosing class?
альтернативный путь
EnhancedFileTester eft = new EnhancedFileTester ();
EnhancedFileTester.AnOvalIcon = eft.new AnOvalIcon(Color.GREEN);

а представьте как выглядит конструктор класса типа

CubeIcon.java:

class CubeIcon extends EnhancedFileTester.AnOvalIcon{
...
}
...
Рейтинг: 0 / 0
29.03.2006, 16:19
    #33632986
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что значит - is not an enclosing class?
Осталось только выяснить, нафиг все это нужно?

На сколько я понимаю, внутренний класс, он на то и внутренний, чтобы использовать его только в теле класса в котором он определен.
...
Рейтинг: 0 / 0
29.03.2006, 17:16
    #33633183
А.Грасоff™
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что значит - is not an enclosing class?
а так?

IconView.java
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
 package  test.swing.glukoza;

 import  javax.swing.filechooser.*;
 import  javax.swing.*;
 import  java.awt.*;
 import  java.io.*;
 import  java.util.*;

 public   class  IconView  extends  FileView {
   private  HashMap hash =  new  HashMap();

   public  IconView() {
    hash.put("txt", EnhancedFileTester.getOvalIcon(Color.GREEN));
  }

   public  String getName(File f) {
    String s = f.getName();
     if  (s.length() ==  0 ) {
      s = f.getAbsolutePath();
    }
     return  s;
  }

   public  String getDescription(File f) {
     return  f.getName();
  }

   public  String getTypeDescription(File f) {
     return  f.getAbsolutePath();
  }

   public  Icon getIcon(File f) {
    String path = f.getAbsolutePath();
     int  pos = path.lastIndexOf('.');
     if  ((pos >=  0 ) && (pos < (path.length() -  1 ))) {
      String ext = path.substring(pos +  1 ).toLowerCase();
       return  (Icon) hash.get(ext);
    }
     return   null ;
  }

   public   Boolean  isTraversable(File file) {
     return  ( new   Boolean (file.isDirectory()));
  }
}

EnhancedFileTester.java
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
 package  test.swing.glukoza;

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

 class  EnhancedFileTester  extends  JPanel {
   public  EnhancedFileTester() {
  }

   private   static   class  AnOvalIcon  implements  Icon {
    Color color;

     public  AnOvalIcon(Color c) {
      color = c;
    }

     public   void  paintIcon(Component c, Graphics g,  int  x,  int  y) {
      g.setColor(color);
      g.fillRect(x, y, getIconWidth(), getIconHeight());
    }

     public   int  getIconWidth() {
       return   10 ;
    }

     public   int  getIconHeight() {
       return   15 ;
    }
  }

   private   static  HashMap ovalIcons;
   public   static  Icon getOvalIcon(Color color) {
    Icon icon;
     if  (ovalIcons ==  null ) {
      ovalIcons =  new  HashMap();
      icon =  new  AnOvalIcon(color);
      ovalIcons.put(color, icon);
       return  icon;
    }

    icon = (Icon) ovalIcons.get(color);
     if  (icon ==  null ) {
      icon =  new  AnOvalIcon(color);
      ovalIcons.put(color, icon);
    }
     return  icon;
  }
}
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Что значит - is not an enclosing class? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]