2010-12-11 21 views
1

J'écris une bibliothèque graphique en Java. Il s'agira d'un frontal pour plusieurs des packages graphiques Java existants, combinant des fonctionnalités de java.awt et de javax.swing. Je suis un enseignant et je crée cette bibliothèque pour mes étudiants débutants afin qu'ils n'aient pas à se contenter d'un méli-mélo de déclarations d'importation. Je voudrais également fournir des couleurs intégrées supplémentaires, pour augmenter l'ensemble limité que java.awt.Color est livré avecComment puis-je étendre la classe java.awt.Color?

Je souhaite créer une classe de couleur qui étend simplement java.awt.Color. De cette façon, l'étudiant n'a pas besoin d'importer java.awt.Color directement. Je l'ai essayé ceci:

package graphics; 

public class Color extends java.awt.Color 
{ 
} 

Mais l'erreur compilation évoque cannot find symbol - constructor Color(). Apparemment, la classe java.awt.Color manque d'un constructeur par défaut et cela provoque l'échec de la compilation de ma classe. Est-ce que je vais juste devoir mordre la balle et écrire ma propre classe de couleur et inclure quelques méthodes pour traduire entre java.awt.Colors et mes couleurs?

Répondre

3

Oui, le java.awt.Color n'a pas de constructeur par défaut, vous devez créer au moins un constructeur am faire un appel au super constructeur:

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

j'aurais répondu à cette exemple:

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;  
    } 
    } 
}