В Java можно ли получить ширину и высоту JFrame без заголовка и других границ?
frame.getWidth() и frame.getHeight() 1, кажется, возвращает ширину, включая границу.
Спасибо.
Ответ 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);