如何获取框架内部的大小?我的意思是可以添加组件的部分。如何获得框架内部的大小?
当我使用.NET
这样的语言,如VB
和C#
,我做了一些窍门。我添加一个面板或类似的东西到我的表单中,并填写表单(在Windows窗体中使用dock属性),然后使用它的大小。
我已尽力在Java
中做到这一点,但没有成功。我试图用一个BorderLayout
添加JPanel
为CENTER我的JFrame
,但虽然面板在画面中,JPanel
返回0
如何获取框架内部的大小?我的意思是可以添加组件的部分。如何获得框架内部的大小?
当我使用.NET
这样的语言,如VB
和C#
,我做了一些窍门。我添加一个面板或类似的东西到我的表单中,并填写表单(在Windows窗体中使用dock属性),然后使用它的大小。
我已尽力在Java
中做到这一点,但没有成功。我试图用一个BorderLayout
添加JPanel
为CENTER我的JFrame
,但虽然面板在画面中,JPanel
返回0
你的方式似乎工作。但是:
JPanel
。 getContentPane()
是适合的。setVisible(true)
为你做这些。但是,如果您不想让JFrame
可见,则可以使用addNotify
和revalidate
。
实施例:
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class Test {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame f = new JFrame();
Container c = f.getContentPane();
f.setSize(800, 600);
System.out.println(c.getSize()); // width=0,height=0
f.addNotify();
f.revalidate();
System.out.println(c.getSize()); // width=784,height=562
f.setVisible(true);
System.out.println(c.getSize()); // width=784,height=562
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
});
}
}
的全尺寸相对功能尝试使用getContentPane和getWidth/getHeight:
getContentPane().getWidth()
getContentPane().getHeight()
测试用一个简单的框架1440,我得到1424x862
你可能会调用大小相关的功能,当框架尚未出现。 您可以使用:
getContentPane().getSize();
调用框架的调用setVisible(true)方法之后。在将框架设置为可见之后,将面板的大小添加到框架的中心,就像以前一样,也可以工作。