Ширина и высота JPanel внутри контейнера JFrame равна 0, почему? - PullRequest
2 голосов
/ 25 ноября 2011

У меня простая проблема, я думаю, вы должны знать, как ее решить .. Я пытаюсь сделать это: у меня есть JFrame.Затем я создаю JPanel и устанавливаю его макет GridLayout (5,5). Finnaly Я добавляю этот JPanel в контейнер моего JFrame.

Когда я пытаюсь получить ширину моей панели, она не должна давать мне 0 прав.?Я делаю это: System.out.println (mypanel.getSize (). GetWidth ());и это говорит, что это ноль: с, почему ??Я хочу знать размер, чтобы я мог разделить на 5 и знать, сколько рисовать для каждой этикетки, это будет сетка этикеток .. Большое спасибо заранее ...

    public janela(){

    window = new JFrame("teste");
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.setSize(300,300);
    contentor = window.getContentPane();
    interior = new JPanel();
    interior.setLayout(new GridLayout(5,5));
    contentor.add(interior);

    System.out.println(interior.getSize().getWidth());   //it says 0 ?!?! why??
     }

большое спасибо заранееребята !!!! * * 1006

1 Ответ

3 голосов
/ 25 ноября 2011

Панели имеют размеры в зависимости от их расположения. в частности, когда они отображаются и для вас вызывается doLayout (). doLayout () выясняет, какой подходящий размер для вашей панели зависит от содержимого панели и действующего менеджера компоновки. Поскольку в вашей панели ничего нет, соответствующий размер равен 0, 0.

Если у вас никогда ничего не будет на панели и вы хотите обойти этот (0, 0) размер, вы можете переопределить getPreferredSize () панели, чтобы вернуть размер, который вы хотите, чтобы панель соответствовала макету.

...