【发布时间】:2011-09-22 03:34:03
【问题描述】:
是否可以使用 JPanel 的大小来设置 JPanel 内部组件的大小?当我尝试在 JPanel 上使用 getHeight() 或 getWidth() 时,它总是返回 0。我知道一旦 JFrame 被打包,它就会得到它的大小,但是如何使用 JPanel 的尺寸并将其应用于里面的组件呢?像这样的
JPanel panel = new JPanel();
JLabel label = new JLabel();
label.setWidth(panel.getWidth());
panel.add(label);
编辑: 请参阅下面的示例代码。如果我希望我的 Jlabel 和我的 JPanel 一样宽,我应该怎么做?这种情况下用boxlayout是不是错了?
public class Main extends JFrame{
public Main(){
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
panel.setBorder(BorderFactory.createLineBorder(Color.blue));
JLabel label = new JLabel();
label.setBorder(BorderFactory.createLineBorder(Color.red));
label.setText("label1");
label.setMinimumSize(panel.getPreferredSize());
label.setPreferredSize(panel.getPreferredSize());
panel.add(label);
add(panel);
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
setSize(500,500);
setVisible(true);
}
public static void main(String[] args)
{
new Main();
}
}
【问题讨论】:
-
试试
panel.getPreferredSize().width -
@oliholz,正如您在上面的示例中看到的,我尝试过,但没有成功。当我打印出面板的首选尺寸时,它的宽度和高度为 2。但是当 Jframe 出现时,面板边框的大小几乎与整个 jframe 相同