我有一个扩展了Window的类JFrame和一个扩展了Content的类JPanelContent的对象被添加到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/

10-09 05:25