最大化后JFrame宽度等于0

时间:2013-02-06 23:02:43

标签: java

为什么它会返回0?我做错了什么?

public MainFrame() {
        setExtendedState(JFrame.MAXIMIZED_BOTH);
        setVisible(true);
        System.out.println(getWidth() + " " + getHeight());
}

2 个答案:

答案 0 :(得分:2)

你得到0的原因是因为你没有调用pack(),setSize(int,int)或setSize(Dimension)中的任何一个。只有在调用其中一种方法时才会计算帧的布局。

答案 1 :(得分:1)

以下代码段可以帮助您解决问题。我甚至不确定你在做什么。

import javax.swing.*;
import java.awt.*;

public class TestFrameSize {

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//        frame.setSize(new Dimension(450, 400));
        frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
//        frame.setLayout(new BorderLayout());

        JLabel question = new JLabel("But that's whole code... Those 3 lines are whole code ");
        question.setHorizontalAlignment(JLabel.CENTER);
        frame.add(question);
        frame.setVisible(true);

        System.out.println(frame.getWidth() + " : " + frame.getHeight());
    }
}