powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите разобраться. Панель в GridBagLayout не выводиться?
6 сообщений из 6, страница 1 из 1
Помогите разобраться. Панель в GridBagLayout не выводиться?
    #33740666
Neuling
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин, целый день сижу.

Имею фрэйм, в который буду вставлять основную панель (с GridBagLayout).

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

Когда пытаюсь использовать GridBagLayout, все пропадает (т.е. я не вижу ничего в фрейме). Не могу понять где ошибка.

Вот для примера упрощенный код панели второго уровня
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 public   class  MyChildPanel  extends  JPanel {
     private  JLabel jLabel1 =  new  JLabel();

     public  MyChildPanel() {
         try  {
            jbInit();
        }  catch  (Exception e) {
            e.printStackTrace();
        }
    }

     private   void  jbInit()  throws  Exception {
         this .setLayout(  null  );
         this .setSize( new  Dimension( 518 ,  46 ));
        jLabel1.setText("THIS IS A TITLE !!!");
        jLabel1.setBounds( new  Rectangle( 120 ,  10 ,  110 ,  20 ));
         this .add(jLabel1,  null );
    }
}
А вот код панели-родителя. Здесь я пытаюсь применить GridBagLayout:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
 public   class  TestPanel  extends  JPanel {

     private  GridBagLayout myLayout =  new  GridBagLayout();

     public  TestPanel() {
             try  {
            jbInit();
        }  catch  (Exception e) {
            e.printStackTrace();
        }
    }//end of procedure


     private   void  jbInit()  throws  Exception {

         this .setLayout(myLayout); // НЕ РАБОТАЕТ!
         this .setLayout( null ); // А С ЭТОЙ СТРОКОЙ РАБОТАЕТ!

         this .setSize( new  Dimension( 700 ,  600 ));
         this .setMinimumSize( new  Dimension( 200 ,  300 ));
        
        //hinzufŸgen der Komponenten ins Panel
         this .setPreferredSize( new  Dimension( 700 ,  600 ));
         this .setToolTipText("null");
        GridBagConstraints constraints =  new  GridBagConstraints();
        
        //wie bewirkt eine Verbreiterung des Fensters?
        constraints.weightx =  0 . 5 ; 
        constraints.weighty =  0 . 5 ;
        
        //wie die Komponente sich erstreckt?
        //bei REMAINDER: volle Breite; RELATIVE: ?
        constraints.gridwidth = GridBagConstraints.REMAINDER;
        constraints.gridheight = GridBagConstraints.REMAINDER;
        
        //wie viele Zeilen in Hohe fuer die Komponente?
        constraints.gridheight =  1 ;
        JPanel title =  new  MyChildPanel();//new GoalsViewTitlePanel();
         this .add (title, constraints);
        
  //      JLabel header = new JLabel("THIS IS A TITLE!"); // ЭТО ТОЖЕ РАБОТАЕТ
 //       constraints.insets = new Insets(0,5,0,5);
  //      this.add (header, constraints);
        
    }//end of procedure
    
}//end of class

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

И еще вопросы теор. плана:
прочитал в доке вроде все про этот GridBagLayout. Не пойму, каким образом я задаю размеры ячеек. В примерах стоят какие-то единицы (насколько я понял, единицой измерения является сама ячейка. А каков ее размер?)

Спасибо
...
Рейтинг: 0 / 0
Помогите разобраться. Панель в GridBagLayout не выводиться?
    #33740678
ddddiiiiimmmmaaaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гы, после строчки
this.setLayout(null);
у тебя уже не гридбэг, у тебя layout абсолютным становится :) - в нем теперь уже надо setBounds компонентам делать.
А вообще попробуй добавить панель с таким констрейнтом:
GridBagConstraints cons = new GridBagConstraints();
cons.gridx=0;
cons.gridy=0;
cons.fill = GridBagConstraints.BOTH;
cons.weightx = 1.0;
cons.weighty = 1.0;
JPanel title = new MyChildPanel();
this.add (title, cons);

А совет тебе на будущее - поизучай гридбег повнимательнее ) Layout может и сложный поначалу, но альтернатив ему особых то нет )
...
Рейтинг: 0 / 0
Помогите разобраться. Панель в GridBagLayout не выводиться?
    #33740717
Neuling
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ddddiiiiimmmmaaaaГы, после строчки
this.setLayout(null);
у тебя уже не гридбэг, у тебя layout абсолютным становится


так это я понимаю. Я добавил эту строку (см. коммент справа), чтобы показать, что без GridBagLayout работает.

ddddiiiiimmmmaaaaсовет тебе на будущее - поизучай гридбег повнимательнее ) Layout может и сложный поначалу, но альтернатив ему особых то нет )

как раз этим и занимаюсь в данный момент. :)

Твой код заработал, поясни пожалуйста все-таки, в чем основная ошибка была. Я в принципе сделал, как в одном из примеров в Инете было. Только вместо Лейбла у меня панель с Лейблом.

И если можно на вопрос, который я в конце (о размерах ячеек задавал) подскажи ответ.

спасибо
...
Рейтинг: 0 / 0
Помогите разобраться. Панель в GridBagLayout не выводиться?
    #33740757
ddddiiiiimmmmaaaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не знаю в чом ошибка. Мало ли чо, разбираться надо.
А насчет размера ячейки - weightx, weighty
...
Рейтинг: 0 / 0
Помогите разобраться. Панель в GridBagLayout не выводиться?
    #33740794
Neuling
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ладно, спасибо.

Посмотрю, я еще не уверен, что мне этот менеджер расположения нужен.
...
Рейтинг: 0 / 0
Помогите разобраться. Панель в GridBagLayout не выводиться?
    #33740961
ddddiiiiimmmmaaaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Neuling
Посмотрю, я еще не уверен, что мне этот менеджер расположения нужен.
В свинге полно менеджеров расположения, есть даже от сторонних производителей, только не совсем понятно зачем они нужны, если все их возможности можно с помощью гридбега сделать.

У знакомого тут спросил, свингиста - какие lyaout используешь - отвечает - гриббег ессно. Ну еще флот, бордер можно.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите разобраться. Панель в GridBagLayout не выводиться?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]