我有一个扩展Window
的课程JFrame
和一个扩展Content
的课程JPanel
。 Content
的对象被添加到Window
的对象中。
班级Window
:
public class Window extends JFrame
{
private Content content;
public Window()
{
setTitle("My Window");
setSize(800, 600);
setResizable(false);
setLocationRelativeTo(getParent());
setDefaultCloseOperation(EXIT_ON_CLOSE);
content = new Content(this);
add(content);
setVisible(true);
}
public static void main(String[] args)
{
new Window();
}
}
班级Content
:
public class Content extends JPanel
{
public Content(Window w)
{
window = w;
System.out.println(window.getContentPane().getWidth());
}
}
现在我需要知道内容窗格的宽度。但window.getContentPane().getWidth()
返回0。
你能告诉我为什么吗?
答案 0 :(得分:2)
使用SetPreferredSize()然后在尝试调用getWidth()之前使用Pack()是关键。这段代码只是你的代码,修改很少,而且工作正常。
public class Window extends JFrame
{
private Content content;
public Window()
{
setTitle("My Window");
setPreferredSize(new Dimension(800, 600));
setResizable(false);
setLocationRelativeTo(getParent());
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
content = new Content(this);
add(content);
setVisible(true);
}
public static void main(String[] args)
{
new Window();
}
}
public class Content extends JPanel
{
Window window = null;
public Content(Window w)
{
window = w;
System.out.println(window.getContentPane().getWidth());
}
}