Java 如何从gridlayout知道组件的大小?

Java 如何从gridlayout知道组件的大小?,java,swing,user-interface,Java,Swing,User Interface,我有一个带有gridlayout的未知维度的jpanel,我想知道如何从它上面的组件获取大小信息 这是一个例子: JPanel basicInformation=new JPanel(); basicInformation.setMaximumSize(100,100); basicInformation.setPreferredSize(basicInformation.getMaximumSize()); basicInformation.setSize(ba

我有一个带有gridlayout的未知维度的jpanel,我想知道如何从它上面的组件获取大小信息

这是一个例子:

    JPanel basicInformation=new JPanel();
    basicInformation.setMaximumSize(100,100);
    basicInformation.setPreferredSize(basicInformation.getMaximumSize());
    basicInformation.setSize(basicInformation.getMaximumSize());
    basicInformation.setMinimumSize(basicInformation.getMaximumSize());
    basicInformation.setLayout(new GridLayout(2, 2, 10, 10));

    JLabel username=new JLabel("Example");
    username.setHorizontalAlignment(JLabel.CENTER);
    username.setOpaque(true);
    basicInformation.add(username);
我想知道如何得到标签的尺寸

JLabel继承自组件,该组件应返回一个维度供您使用

您可以随时调用它,但如果框架或面板尚未可见(即仍在构造中),它将返回0,0。在任何
.setVisible(true)
之后执行
getSize()
,以获取正确的值

username.getPreferredSize();
返回维度

username.getPreferredSize().width; 
username.getPreferredSize().height;

返回单个组件。

username.getSize().width或.height都返回0。这不好。我会调查一下,然后再告诉你。我想我找到了原因。必须先绘制框架,然后才能确定其大小。将帧设置为可见,然后尝试获取它。我在将框架设置为可见之前和之后都进行了尝试,当不可见时,它返回0,0,当可见时,它返回正确的值。是否可以在它可见之前获取它?现在我正在使用面板中的getSize(),如下所示:username.setSize(新维度(basicInformation.getSize()-marginY,basicInformation.getSize()-marginX));据我所知,没有。如果您愿意,您可以尝试将其设置为可见,然后再次将其隐藏,以获得相应的大小。或者,您可以创建一个resize方法,该方法在绘制所有内容后发生,以设置用户名的大小。