Java: проблема изменения размера JLayeredPane - PullRequest
1 голос
/ 28 февраля 2011

Я пишу графический интерфейс программы в Java. Я хочу иметь JLayeredPane как ContentPane моего JFrame. На моем JLayeredPane есть два слоя: один слой - Canvas (canvas1), а другой - JPanel (jPanel5). Я использую Netbeans IDE, и генерируется этот код:

    canvas1.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
    canvas1.setBounds(0, 0, -1, -1);
    jLayeredPane1.add(canvas1, javax.swing.JLayeredPane.PALETTE_LAYER);

    jPanel5.setBounds(0, 0, 670, 550);
    jLayeredPane1.add(jPanel5, javax.swing.JLayeredPane.DEFAULT_LAYER);

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 670, Short.MAX_VALUE)
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 553, Short.MAX_VALUE)
    );

упаковка ();

когда я запускал свою программу, я видел странное событие! Когда я изменяю размер tje JFrame; размер основного JLayeredPane не изменился. Я использовал разные цвета backGround для компонентов, и для меня очевидно, что размер JLayered постоянен, однако я установил его по вертикали и по горизонтали с возможностью изменения его свойств. Размер JFrame можно изменять, но основной размер jLayeredPane равен permamnet.

Как мне изменить размер jLayeredPane как моего JFrame?!

спасибо

enter image description here

Ответы [ 2 ]

1 голос
/ 15 июня 2011

Вы можете изменить JLayeredPane вместе с JFrame. Находясь в режиме разработки (в среде IDE NetBeans), щелкните правой кнопкой мыши панель JLayeredPane, затем во всплывающем меню наведите курсор мыши на «Авторазмер», затем выберите вертикальное и горизонтальное положение. Таким образом, размер JLayeredPane изменится относительно JFrame.

1 голос
/ 28 февраля 2011

Попробуйте использовать BorderLayout по умолчанию вместо GroupLayout, который вы используете сейчас.Просто закомментируйте группу строк, которые начинаются с создания GroupLayout, и добавьте следующую строку:

getContentPane().add(jLayeredPane, BorderLayout.CENTER);

Параметр BorderLayout.CENTER для метода .add () сообщает менеджеру BorderLayout, что вы хотите, чтобы данный виджетзаполните центр вашего окна.

...