我有一个扩展了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。你能告诉我为什么吗?
最佳答案
在尝试调用getWidth()之前,先使用SetPreferredSize()然后再使用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());
}
}
关于java - 为什么getContentPane()。getWidth()返回0?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29481059/