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

Код: 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
Что значит - is not an enclosing class?
    #33632385
Чтобы создавать объекты класса EnhancedFileTester.AnOvalIcon вне EnhancedFileTester, нужно объявить EnhancedFileTester.AnOvalIcon static.
...
Рейтинг: 0 / 0
Что значит - is not an enclosing class?
    #33632878
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
альтернативный путь
EnhancedFileTester eft = new EnhancedFileTester ();
EnhancedFileTester.AnOvalIcon = eft.new AnOvalIcon(Color.GREEN);

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

CubeIcon.java:

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

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

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
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Что значит - is not an enclosing class?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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