На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Следующие правила действуют в данном разделе в дополнение к общим Правилам Форума
1. Здесь обсуждается Java, а не JavaScript! Огромная просьба, по вопросам, связанным с JavaScript, SSI и им подобным обращаться в раздел WWW Masters или, на крайний случай, в Многошум.
2. В случае, если у вас возникают сомнения, в каком разделе следует задать свой вопрос, помещайте его в корневую ветку форума Java. В случае необходимости, он будет перемещен модераторами (с сохранением ссылки в корневом разделе).

3. Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
4. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.
Модераторы: dark_barker, wind
  
> Нубический вопрос по layout'ам
    Есть pane1 и pane2
    Хочется разметить их на апплете следующим образом - pane1 над pane2, при этом pane2 имеет фиксированную высоту. Высота и ширина pane1, ширина pane2 должны выбираться автоматом так, что бы эти два пана занимали весь апплет.
    Можете показать готовый код? Я понимаю, что все это элементарно находится, но на http://java.sun.com/docs/books/tutorial/uiswing/layout/using.html много написано и толком не получается что нужно.
      Решение у вашей задачки не одно. Наиболее простое - BorderLayout, при этом верхней пенли устанавливается preferredSize:

      ExpandedWrap disabled
        container.setLayout(
            new BorderLayout()
        );
         
        panel1.setPreferredSize(
            new Dimension(0, fixed_height_value) // ширину компонента устанавливать бесполезно, т. к. BorderLayout всё равно его растянет
        );
         
        container.add(panel1, BorderLayout.NORTH);
        container.add(panel2, BorderLayout.CENTER);
        Спасибо :)
        Еще вопрос
        Если у нас класс A вложен в класс B.
        Как из метода класса A получить ссылку на экземпляр класса B?

        И еще, как обновить layout, после того как в pane Добавились новые элементы? Потому что по факту оно обновляется только после ресайзинга
          Цитата ANDLL @
          И еще, как обновить layout, после того как в pane Добавились новые элементы? Потому что по факту оно обновляется только после ресайзинга

          Попробуй pack(), либо repaint().

          Цитата ANDLL @
          Если у нас класс A вложен в класс B.
          Как из метода класса A получить ссылку на экземпляр класса B?

          Если класс A является внутренним по отношению к B, то это ничего не говорит об отношениях между экземплярами классов. Если ты в своем объекте класса B делаешь A a = new A() - вот тебе и ссылка. Если нет - тогда объект A вообще не будет создан.
            Цитата batigoal @
            Если класс A является внутренним по отношению к B, то это ничего не говорит об отношениях между экземплярами классов
            Отнюдь - из внтруннего класса можно вызвать любой метод внешнего класса. Причем нестатический метод. А как получить собственно экземпляр?

            Добавлено
            Цитата batigoal @
            Попробуй pack(), либо repaint().
            Эмм, у Applet нету метода pack. repaint не помог
              Цитата ANDLL @
              Отнюдь - из внтруннего класса можно вызвать любой метод внешнего класса. Причем нестатический метод. А как получить собственно экземпляр?

              Пардон, перепутал местами A и B.

              Получить его можно через B.this:

              ExpandedWrap disabled
                public class InternalTest {
                    public static void main(String[] args) {
                        A a = new A();
                    }
                }
                 
                class A
                {
                    String field = "field A";
                 
                    A()
                    {
                        B b = new B();
                        b.someBMethod();
                    }
                 
                    public void someAMethod()
                    {
                        System.out.println("A :: someAMethod()");
                    }
                 
                    class B
                    {
                        public void someBMethod()
                        {
                            System.out.println("B :: someBMethod()");
                            System.out.println(A.this.field);
                        }
                    }
                }
                Цитата batigoal @
                Получить его можно через B.this:
                Точно, спасибо огромное!
                А как обновить, идеи есть?
                  Цитата ANDLL @
                  Эмм, у Applet нету метода pack. repaint не помог

                  Еще есть validate() - может, он спасет.
                    Еще вопросец.
                    У меня есть JTree
                    ExpandedWrap disabled
                      DefaultTreeModel treeModel=new DefaultTreeModel(node);
                      t=new EditingTree(treeModel);//EditingTree extends JTree
                      t.addTreeSelectionListener(new TreeSelectionListener(){
                                  @Override
                                  public void valueChanged(TreeSelectionEvent e) {
                                      e.getNewLeadSelectionPath();
                                  }
                              
                              });
                    Как зная e.getNewLeadSelectionPath() получить собственно элемент из treeModel? И еще, если я добавлю в treeModel элемент, он автоматом отобразится в дереве? Если нет, то как это исправить?
                      Спасибо, разрешилось
                        На будущее:
                        Цитата Правила
                        3. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.
                          Цитата ANDLL @
                          И еще, как обновить layout, после того как в pane Добавились новые элементы?

                          ExpandedWrap disabled
                            revalidate();
                            repaint();
                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                          0 пользователей:


                          Рейтинг@Mail.ru
                          [ Script execution time: 0,0373 ]   [ 15 queries used ]   [ Generated: 2.05.24, 21:32 GMT ]