Как я могу расширить класс java.awt.Color? - PullRequest
1 голос
/ 12 декабря 2010

Я пишу графическую библиотеку на Java.Это будет интерфейс для нескольких существующих графических пакетов Java, сочетающий в себе функции из java.awt и javax.swing.Я учитель, и я создаю эту библиотеку для своих начинающих учеников, чтобы им не приходилось копаться в мешанине с заявлениями об импорте.Я также хотел бы предоставить некоторые дополнительные встроенные цвета, чтобы расширить ограниченный набор, который поставляется с 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 отсутствует конструктор по умолчанию, и это приводит к сбою компиляции в моем классе.

Нужно ли просто прикусить пулю и написать свой собственный класс Color и включить некоторые методы для перевода между javaЦвета и мои цвета?

Ответы [ 2 ]

3 голосов
/ 12 декабря 2010

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

public class Color extends java.awt.Color{
  public Color(int rgb) {
    super(rgb);
  }
}
1 голос
/ 09 сентября 2011

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

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;     
     } 
   } 
 } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...