为什么 getContentPane().getWidth() return 0?
Why does getContentPane().getWidth() return 0?
我有一个扩展 JFrame
的 class Window
和一个扩展 JPanel
的 class Content
。 Content
的对象添加到 Window
的对象。
Class 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();
}
}
Class Content
:
public class Content extends JPanel
{
public Content(Window w)
{
window = w;
System.out.println(window.getContentPane().getWidth());
}
}
现在我需要知道内容窗格的宽度。但是 window.getContentPane().getWidth()
returns 0.
你能告诉我为什么吗?
使用 SetPreferredSize() 然后使用 Pack() 是尝试调用 getWidth() 之前的关键。此代码只是您的代码,稍作修改,可以正常工作。
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());
}
}
我有一个扩展 JFrame
的 class Window
和一个扩展 JPanel
的 class Content
。 Content
的对象添加到 Window
的对象。
Class 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();
}
}
Class Content
:
public class Content extends JPanel
{
public Content(Window w)
{
window = w;
System.out.println(window.getContentPane().getWidth());
}
}
现在我需要知道内容窗格的宽度。但是 window.getContentPane().getWidth()
returns 0.
你能告诉我为什么吗?
使用 SetPreferredSize() 然后使用 Pack() 是尝试调用 getWidth() 之前的关键。此代码只是您的代码,稍作修改,可以正常工作。
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());
}
}