2013-07-04 81 views
0

如何获取框架内部的大小?我的意思是可以添加组件的部分。如何获得框架内部的大小?

当我使用.NET这样的语言,如VBC#,我做了一些窍门。我添加一个面板或类似的东西到我的表单中,并填写表单(在Windows窗体中使用dock属性),然后使用它的大小。

我已尽力在Java中做到这一点,但没有成功。我试图用一个BorderLayout添加JPanel为CENTER我的JFrame,但虽然面板在画面中,JPanel返回0

回答

0

你的方式似乎工作。但是:

  • 您不需要手动添加JPanelgetContentPane()是适合的。
  • 如果你想获得它的大小。您需要
    1. 通过将此JFrame连接到本机屏幕资源来使其可显示。
    2. 重新验证JFrame。

setVisible(true)为你做这些。但是,如果您不想让JFrame可见,则可以使用addNotifyrevalidate

实施例:

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); 
      } 
     }); 
    } 
} 
1

你可能会调用大小相关的功能,当框架尚未出现。 您可以使用:

getContentPane().getSize(); 

调用框架的调用setVisible(true)方法之后。在将框架设置为可见之后,将面板的大小添加到框架的中心,就像以前一样,也可以工作。

相关问题