llamando a un método java para dibujar gráficos

Estoy tratando de dibujar algunos gráficos simples a un marco. También me gustaría poder ajustar lo que estoy dibujando desde mi método principal. Por ejemplo, establecer una variable de cadena para imprimir, o las coordenadas de un rectángulo.

El problema que parece tener es que lapaintComponent El método se llama antes de que pueda establecer las variables de clase. ¿Cómo cambiaría este código para poder configurar elJPanel/JFrame ¿Las variables ANTES se dibujan a pantalla?

Gracias

import java.awt.*;
import javax.swing.*;

public class Test {

    public static void main(String[] args) {
        FrameTest test_frame = new FrameTest();
        test_frame.test_string = "I WANT TO DRAW THIS STRING";
    }
}

class FrameTest extends JFrame{
    private static final long serialVersionUID = 1L;
    String test_string;

    public FrameTest(){
        this.test_string = "TEMP STRING FROM FRAME";
        JFrame gui = new JFrame();
        gui.setTitle("Test Title");
        gui.setSize(400,400);
        gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Painting painting = new Painting();

        Container pane = gui.getContentPane();
        pane.setLayout(new GridLayout(1,1));

        pane.add(painting);
        gui.setVisible(true);

    }
}

class Painting extends JPanel{
    private static final long serialVersionUID = 1L;
    String test_string;

    public Painting(){
        setBackground(Color.WHITE);
        this.test_string = "TEMP STRING FROM PANEL";
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        g.setColor(Color.RED);
        g.drawString(test_string, 20, 20);
    }
}

Respuestas a la pregunta(4)

Su respuesta a la pregunta