La variable de instancia inicializada en el constructor de la clase se vuelve nula en el método anulado

Aquí tengo una clase simple que extiende una clase en la biblioteca de gráficos ACM llamada GRect. Grect es un rectángulo básico que se puede dibujar en un GCanvas (también parte de ACM). Lo que quiero lograr es un nuevo objeto que sea un rectángulo, pero que tenga una etiqueta adjunta que se mueva con el rectángulo.

En mi código, he creado una clase llamada LabelRect que extiende GRect, y contiene una variable de instancia "rectLabel" que es del tipo GLabel, que se inicializa en el constructor LabelRects. Quiero anular algunos de los métodos de GRect para que cuando labledRect se mueva, rectLabel se mueva con él.

Mi problema es que a pesar de que "rectLabel" se declara como una variable de instancia, y se inicializa en el constructor, se convierte en NULL en el método reemplazado "setLocation". También intenté inicializar "rectLabel" en la declaración, pero ocurre el mismo problema.

import acm.graphics.*;

public class labeledRect extends GRect {

    //GLabel declared as an instance variable
    public GLabel rectLabel;

    public labeledRect(double x, double y, double width, double height, String theLabel) {
        //Call GRect constructor
        super(x, y, width, height);

        //Label initialized. 
        //Location setting and adding to the canvas works fine here. 
        rectLabel = new GLabel(theLabel);
        rectLabel.setLocation(
                    x + (width / 2) - (rectLabel.getWidth() / 2),
                    y + (height / 2) + (rectLabel.getAscent() / 2.2));
    }

    public void setLocation(double x, double y)
    {
        //Setting GRect's location. Works correctly./
        super.setLocation(x, y);

        //Attempt to set the label's location 
        //and get a NullPointer exception for rectLabel
        rectLabel.setLocation(
                super.getX() - (rectLabel.getWidth() / 2),
                super.getY() - (rectLabel.getHeight() / 2));
    }
}
Respuesta 1

Como se sabe, las clases de la biblioteca rt.jar se cargan a través de Bootstrap Classloader. java.lang es parte de la biblioteca rt.jar. Sin embargo, este ejemplo System.out.println (ArrayList.class.getClassLoader ()); ...

Estoy tratando de permitir al usuario la libertad de ingresar un número a su propio estilo como si pudiera elegir ingresar 2 o 2.00, pero como sabe, el doble no puede aceptar esto (2). Quiero que el doble acepte esto con ...

Estoy creando código que tradujo una palabra (obtenida por el usuario) al Pig Latin. Mi código funciona realmente bien, excepto por una cosa. Quiero que el usuario escriba "y" o "n" para determinar si el código ...

Tengo el siguiente código tratando de convertir entre bytes y matrices de bits, de alguna manera no se está convirtiendo correctamente, ¿qué está mal y cómo corregirlo? Cadena getBitsFromBytes (byte [] Byte_Array) ...