2010-12-11 4 views
1

Я пишу графическую библиотеку на Java. Это будет интерфейсом для нескольких существующих Java-графических пакетов, сочетающих функции java.awt и javax.swing. Я преподаватель, и я создаю эту библиотеку для своих начинающих учеников, поэтому им не нужно гадать с помощью hodge-podge из импортных заявлений. Я также хотел бы предоставить некоторые дополнительные встроенные цвета, чтобы увеличить ограниченный набор, который java.awt.Color поставляется сКак расширить класс java.awt.Color?

Я хочу создать класс Color, который просто расширяет java.awt.Color. Таким образом, ученику не нужно напрямую импортировать java.awt.Color. Я попытался это:

package graphics; 

public class Color extends java.awt.Color 
{ 
} 

Но компилирование вызывает ошибку cannot find symbol - constructor Color(). По-видимому, в классе java.awt.Color отсутствует конструктор по умолчанию, и это приводит к сбою компиляции моего класса.

Должен ли я просто укусить пулю и написать свой собственный класс цвета и включить некоторые методы для перевода между java.awt.Colors и моими цветами?

ответ

3

Да, java.awt.Color не имеет конструктор по умолчанию, так что вы должны создать по крайней мере один конструктор я сделать вызов супер конструктор:

public class Color extends java.awt.Color{ 
    public Color(int rgb) { 
    super(rgb); 
    } 
} 
1

Я бы ответил с этим пример:

public class Color extends java.awt.Color { 
    public final static Color AZURE = new Color(240,255,255); 
    public static Color colorOf(String color) { 
    try { 
     return (Color)Color.class.getDeclaredField(color).get(null); 
    } catch(Exception notAvailable) { 
     System.out.println("RGB color " + color + " is not a predefined " + 
         "static color."); 
     return null;  
    } 
    } 
} 
Смежные вопросы