2010-12-11 35 views
1

Ich schreibe eine Grafikbibliothek in Java. Es wird ein Front-End für einige der vorhandenen Java-Grafikpakete sein und Features von java.awt und javax.swing kombinieren. Ich bin ein Lehrer und ich erstelle diese Bibliothek für meine Anfängerschüler, damit sie nicht mit einem Sammelsurium von Importanweisungen herumhacken müssen. Ich möchte auch einige zusätzliche integrierte Farben zur Verfügung stellen, um die begrenzte Menge zu erhöhen, die java.awt.Color mitWie kann ich die Klasse java.awt.Color erweitern?

Ich möchte eine Color-Klasse erstellen, die java.awt.Color einfach erweitert. Auf diese Weise muss der Schüler java.awt.Color nicht direkt importieren. Ich habe dies versucht:

package graphics; 

public class Color extends java.awt.Color 
{ 
} 

Aber Compilierung erinnert an die Fehler cannot find symbol - constructor Color(). Anscheinend fehlt der java.awt.Color-Klasse ein Standardkonstruktor, und dies führt dazu, dass meine Klasse die Kompilierung nicht besteht.

Muss ich nur in den sauren Apfel beißen und meine eigene Color-Klasse schreiben und einige Methoden für die Übersetzung zwischen java.awt.Colors und my Colors aufnehmen?

Antwort

3

Ja, die java.awt.Color keinen Standardkonstruktor haben, so dass Sie mindestens einen Konstruktor erstellen haben am einen Aufruf an die Super-Konstruktor machen:

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

ich damit beantwortet hätte Beispiel:

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