Подтвердить что ты не робот

JFrame: получить размер без границ?

В Java можно ли получить ширину и высоту JFrame без заголовка и других границ?

frame.getWidth() и frame.getHeight() 1, кажется, возвращает ширину, включая границу.

Спасибо.

4b9b3361

Ответ 1


frame.getContentPane().getSize();

Ответ 2

frame.pack();
System.out.println("frame width : "+getWidth());
System.out.println("frame height: "+getHeight());
System.out.println("content pane width : "+getContentPane().getWidth());
System.out.println("content pane height: "+getContentPane().getHeight());
System.out.println("width  of left + right  borders: "+(getWidth()-getContentPane ().getWidth()));
System.out.println("height of top  + bottom borders: "+(getHeight()-getContentPane().getHeight()));

Ответ 3

Это прекрасно работает

frame.getContentPane().getSize();

Но если вы еще не добавили контент. В моем случае я хотел рассчитать внутренние размеры JFrame перед добавлением контента, поэтому я мог бы соответствующим образом разделить содержимое. Вот что я придумал.

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

pack(); // Need this, otherwise insets() show as 0.  
int scrW = (int)screenSize.getWidth();
int scrH = (int)screenSize.getHeight();
  int innerW = scrW - getInsets().left - getInsets().right;
  int innerH = scrH - getInsets().top - getInsets().bottom;

  // Need to setSize(), otherwise pack() will collapse the empty JFrame
  setSize(scrW, scrH);