Breite des Content Panes zurückliefern?

Hallo ich habe die Frage, wie man an die Höhe bzw. Breite ohne den Rand eines JFrames erfragen lassen kann. Ich denke das ist der/das Content Pane. Damit will ich die genaue Position des rechten und unteren Randes bestimmen.

frame.getContentPane().getSize();

Aber ggf. braucht man mehr Infos, WANN das WOZU aufgerufen wird. So funktioniert das nur, wenn der Frame schon fertig zusammengebaut und auf dem Bildschirm sichtbar ist. Und wenn der LayoutManager noch was macht, oder der Benutzer die Fenstergröße ändert, ist’s damit natürlich Essig…

Also angenommen ich erstelle einen leeren JFrame mit 800 * 600 Pixeln. Würde mir dann die Methode, wenn ich die Breite abfrage 800 - Fensterrand zurückliefern?

Scheint so :wink:

import javax.swing.JFrame;
import javax.swing.SwingUtilities;


public class ContentPaneSizeTest
{
    public static void main(String[] args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            @Override
            public void run()
            {
                createAndShowGUI();
            }
        });
    }
    
    private static void createAndShowGUI()
    {
        final JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(800,500);
        f.setLocationRelativeTo(null);
        f.setVisible(true);
        
        Thread t = new Thread(new Runnable()
        {
            @Override
            public void run()
            {
                while (true)
                {
                    System.out.println("Size "+f.getContentPane().getSize());
                    try
                    {
                        Thread.sleep(100);
                    }
                    catch (InterruptedException e)
                    {
                        Thread.currentThread().interrupt();
                        return;
                    }
                }
            }
        });
        t.setDaemon(true);
        t.start();
    }
    
}

vielen dank!