2014-11-26 2 views
0

У меня есть мой главный;Конструктор для суперкласса не определен

package lab8_9; 
import se.lth.cs.ptdc.images.ImageFilter; 
import se.lth.cs.ptdc.images.ImageGUI; 

public class ImageProcessor { 
    public static void main(String[] args) { 
     ImageFilter[] filters = new ImageFilter[2]; 
     filters[0] = new IdentityFilter("Identity Filter"); 
     filters[1] = new BlueFilter("Blue Filter"); 
     new ImageGUI(filters); 
    } 
} 

у меня есть класс;

package lab8_9; 
import java.awt.Color; 
import se.lth.cs.ptdc.images.ImageFilter; 

public class IdentityFilter extends ImageFilter { 
    public IdentityFilter(String name) { 
     super(name); 
    } 

    public Color[][] apply(Color[][] inPixels, double paramValue) { 
     int height = inPixels.length; 
     int width = inPixels[0].length; 
     Color[][] outPixels = new Color[height][width]; 
     for (int i = 0; i < height; i++) { 
      for (int j = 0; j < width; j++) { 
       Color pixel = inPixels[i][j];   
       outPixels[i][j] = new Color(pixel.getRed(), 
              pixel.getGreen(), 
              pixel.getBlue()); 
      } 
     } 
     return outPixels; 
    } 
} 

Оба из них прекрасно работают, но затем я пытаюсь написать свой собственный класс;

package lab8_9; 
import java.awt.Color; 
import java.awt.image.ImageFilter; 


public class BlueFilter extends ImageFilter { 
    public BlueFilter(String name) { 
     super(name); 
    } 

    public Color[][] apply(Color[][] inPixels, double paramValue) { 
     int height = inPixels.length; 
     int width = inPixels[0].length; 
     Color[][] outPixels = new Color[height][width]; 
     for (int i = 0; i < height; i++) { 
      for (int j = 0; j < width; j++) { 
       Color pixel = inPixels[i][j];   
       outPixels[i][j] = new Color(0, 
              0, 
              pixel.getBlue()); 
      } 
     } 
     return outPixels; 
    } 
} 

У меня две ошибки, одна для моей основной;

filters[1] = new BlueFilter("Blue Filter"); 

«Несоответствие типа: не может конвертировать из BlueFilter в ImageFilter»

и один для класса я пытаюсь добавить в конструктор;

public BlueFilter(String name) { 
     super(name); 
    } 

"Конструктор ImageFilter (String) не определено"

Я потерял здесь, в чем проблема? Я в значительной степени копировал IdentityFilter, который отлично работал, но он не работает. Любая помощь приветствуется. Я новичок, поэтому, пожалуйста, продолжайте объяснять, что я делаю неправильно.

Вот суперкласс, если кому-то это нужно, я его не написал;

package se.lth.cs.ptdc.images; 
    import java.awt.Color; 

    public abstract class ImageFilter { 
     private String name; 

     protected ImageFilter(String name) { 
      this.name = name; 
     } 

     public String getName() { 
      return name; 
     } 


     public abstract Color[][] apply(Color[][] inPixels, double paramValue); 

     protected short[][] computeIntensity(Color[][] pixels) { 
      int height = pixels.length; 
      int width = pixels[0].length; 
      short[][] intensity = new short[height][width]; 
      for (int i = 0; i < height; i++) { 
       for (int j = 0; j < width; j++) { 
        Color c = pixels[i][j]; 
        intensity[i][j] = (short) ((c.getRed() + c.getGreen() + c 
          .getBlue())/3); 
       } 
      } 
      return intensity; 
     } 


     protected short convolve(short[][] p, int i, int j, short[][] kernel, 
       int weight) { 
      short sum = 0; 
      for (int ii = -1; ii <= 1; ii++) { 
       for (int jj = -1; jj <= 1; jj++) { 
        sum += p[i + ii][j + jj] * kernel[ii + 1][jj + 1]; 
       } 
      } 
      return (short) Math.round((double) sum/weight); 
     } 
    } 

ответ

5

Вы импортируете java.awt.image.ImageFilter; вместо se.lth.cs.ptdc.images.ImageFilter;.

+0

Ого, это был очень быстрый ответ :), спасибо. Теперь моя программа работает отлично! – BarksRosaRota

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