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

Имею фрэйм, в который буду вставлять основную панель (с 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
20.05.2006, 22:57
    #33740678
ddddiiiiimmmmaaaa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться. Панель в GridBagLayout не выводиться?
Гы, после строчки
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
20.05.2006, 23:26
    #33740717
Neuling
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться. Панель в GridBagLayout не выводиться?
ddddiiiiimmmmaaaaГы, после строчки
this.setLayout(null);
у тебя уже не гридбэг, у тебя layout абсолютным становится


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

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

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

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

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

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

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

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


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