Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Прижать компонент в Box-е к верхней грани


Автор: kaa 2.6.2008, 01:22
Народ, пользую в качестве менеджера компоновки BoxLayout. 

Так вот возникла ситуация: запихиваю в verticalBox компонент, но как его прижать к верхней границе этого бокса ума не приложу.
Компонент - JScrollPane(JTree);

Код

public EditFrame(){
       this.setTitle("Editor window");
       this.setSize(600, 400);
       this.setDefaultCloseOperation(EXIT_ON_CLOSE);
              
       this.mainPanel = new MainPanel(this);
       this.st = new SystemTree(this.mainPanel);
       this.CreateOfficialMenu();
       this.mainPanel.setVisible(false);
              
       this.setJMenuBar(this.officialMenu);
       
       this.CreateToolbar();
       
       Box mainBox = Box.createHorizontalBox();
       Box treeBox = Box.createVerticalBox();
       Box editorBox = Box.createVerticalBox();
       
       
       treeBox.add(new JScrollPane(this.st));//Вот это надо прижать к верху
       treeBox.add(Box.createVerticalGlue());//Это до конца не помогает
       editorBox.add(this.mainPanel);
       
              
       Dimension size = new Dimension(200,300);
       treeBox.setPreferredSize(size);
       size = new Dimension(400,800);
       treeBox.setMaximumSize(size);
       size = new Dimension(100,300);
       treeBox.setMinimumSize(size);
       
       mainBox.add(treeBox);
       mainBox.add(Box.createHorizontalGlue());
       mainBox.add(editorBox);
             
       this.add(new JScrollPane(mainBox), BorderLayout.CENTER);
       
       
       //Запрещаем все кнопки редактирования
        this.add.setEnabled(false);
        this.delete.setEnabled(false);
        this.save.setEnabled(false);
            
        this.addToolBar.setEnabled(false);
        this.deleteToolBar.setEnabled(false);
        this.saveToolBar.setEnabled(false);
              
        this.st.add.setEnabled(false);
        this.st.delete.setEnabled(false);
       
        //ставим обработчик на изменение структуры дерева и выделения узла
        //Ставим здесь, ибо до создания mainPanel ставить нельзя - зависит от неё
        this.st.addTreeExpansionListener(new SynchronizeAllowButton(this.st));
        this.st.addTreeSelectionListener(new SynchronizeAllowButton(this.st));
        
        this.setVisible(true);
        
        //Устанавливаем фокус на корень дерева
        DefaultTreeModel tm = (DefaultTreeModel)this.st.getModel();
        TreePath pathToRoot = new TreePath(tm.getPathToRoot((TreeNode)tm.getRoot()));
        this.st.setSelectionPath(pathToRoot);
       
   }


В прикрепленном файле скрин ка это дело выглядит.
Если кто сталкивался с данной траблой - откликнитесь пожалуйста.

Автор: Старовъръ 2.6.2008, 06:58
А что на Box-ах мир заканчивается? Комбинируй несколько менеджеров. Для того, чтоб что-то растянуть на всю, например, можно использовать GridLayout.

Автор: kaa 2.6.2008, 09:52
Старовъръ, 
Да не заканчивается в общем-то smile
Просто меня как бы устраивает уже существующий дизайн, за исключением этой маленькой фишечки. 
Конечно если прижать нельзя -> GridLayout рулит smile

Но так как я чел от природы ленивый, хочется всё же удостоверится, преждечем переделывать код smile

Автор: dorogoyIV 2.6.2008, 12:42
ну можно под твою treeBox положить еще один Box
Код

  Box lowerTreeBox = Box.createVerticalBox();

  Box treeBox = Box.createVerticalBox();
  treeBox.add(new JScrollPane(new JTree()));

  treeBox.setPreferredSize(new Dimension(200, 300));
  treeBox.setMinimumSize(new Dimension(100, 300));
  treeBox.setMaximumSize(new Dimension(200, 300));

  lowerTreeBox.add(treeBox);
  lowerTreeBox.add(Box.createVerticalGlue());

  mainBox.add(lowerTreeBox);

Автор: kaa 2.6.2008, 23:40
dorogoyIV,

Сделал так:

Код

treeBox.add(new JScrollPane(this.st));
treeBox.add(Box.createVerticalGlue());
treeBox.add(Box.createVerticalBox()); 


Не помогло... 
Буду значит с GridBagLayout химичить...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)