Исчезает добавленное слово

Я хочу добавить слово в форму. Начал с простого. Хочу добавить слово так, чтобы оно не выходило за рамки экрана. Но почему-то слово или исчезает, или превращается в сплошной квадрат в правом верхнем углу, когда я пытаюсь изменить размер окна приложения. Буду рад любой помощи.

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

public class Graphics extends JPanel {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setLayout(new BorderLayout());
        frame.getContentPane().add(new Graphics(), BorderLayout.CENTER);
        frame.setSize(400, 400);
        frame.setMinimumSize(frame.getSize());
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }


    Color rectColor;
    Color textColor;
    Font textFont;
    String text;

    {
        rectColor = new Color(0x0060FF);
        textColor = new Color(0x404000);
        textFont = new Font("Arial", Font.BOLD, 13);
        text = "Hello, World!aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
    }

    @Override
    public void paint(java.awt.Graphics g) {
        final int width = getWidth();
        final int height = getHeight();
        final double size = Math.sqrt(width * height);
        float textSize;

        //setup
        Graphics2D g2 = (Graphics2D) g;
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

        //rectangle
        g.clearRect(0,0, width, height);
        g.setColor(Color.blue);
        int s = (int) (size * (1 / 10d));
        g.fillRoundRect(0,0, width, height, s, s);

        //text
        g.setColor(Color.black);
        textSize = (float) size * (1 / 40f);
        Font textFont = this.textFont.deriveFont(textSize);

        FontMetrics textMetrics = g.getFontMetrics();
        Rectangle2D r = textFont.getStringBounds(text, g2.getFontRenderContext());
        System.out.println("(" + r.getWidth() + ", " + r.getHeight() + ")");
        if (r.getWidth()<getWidth()) {
            textSize = (float) ((getWidth()-10)*(getHeight()-10)* (1 / 40f));
        }
        textFont = this.textFont.deriveFont(textSize);
        g.setFont(textFont);
        g.drawString(text, (width - textMetrics.stringWidth(text)) / 2, (textMetrics.getAscent() + (height - (textMetrics.getAscent() + textMetrics.getDescent())) / 2));
    }
}

Ответы (0 шт):