Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> 2 контента на одной форме 
:(
    Опции темы
ChessMaster
  Дата 24.8.2007, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 1.8.2007

Репутация: нет
Всего: нет




Я хочу разделить форму на правую и левую часть. В одной дерево в другой текст эрия. Если добавляю екст эрию к форме , то дерево исчезает :(


Код


import java.awt.*;
import javax.swing.*;
import javax.swing.tree.*;

public class Application extends JFrame {

       public Application() {
                    super("FeedBar 2");
                    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                   // create menu
                   JMenuItem j1 = new JMenuItem("Inpmort XML");
                   JMenuItem j2 = new JMenuItem("Exit");
                   JMenuBar menubar = new JMenuBar();
                   JMenu menu = new JMenu("File");
                   menu.add(j1);
                   menu.add(j2);
                   menu.addSeparator();
                   menubar.add(menu);
                   
                   // prepare user interface
                  
                   BorderLayout bord = new BorderLayout();
                   setLayout(bord);
                   setJMenuBar(menubar);
                   pack();
                   
                   Object[] hierarchy = {1,2};
                   Container content = getContentPane();
                   DefaultMutableTreeNode root = processHierarchy(hierarchy);
                   JTree tree = new JTree(root);
                   content.add(new JScrollPane(tree), BorderLayout.CENTER);
                   
                   JTextArea field = new JTextArea();
                   
                   Container content2 = getContentPane();
                   content2.add(field);
                   this.setSize(400, 400);
                   setVisible(true);
               }
          
               public static void main(String[] arguments) {
                   Application app = new Application();
               }
               
               private DefaultMutableTreeNode processHierarchy(Object[] hierarchy) {
                 DefaultMutableTreeNode node =
                   new DefaultMutableTreeNode(hierarchy[0]);
                 DefaultMutableTreeNode child;
                 for(int i=1; i<hierarchy.length; i++) {
                   Object nodeSpecifier = hierarchy[i];
                   if (nodeSpecifier instanceof Object[])  // Ie node with children
                     child = processHierarchy((Object[])nodeSpecifier);
                   else
                     child = new DefaultMutableTreeNode(nodeSpecifier); // Ie Leaf
                   node.add(child);
                 }
                 return(node);
               }

}


PM MAIL   Вверх
AntonSaburov
Дата 24.8.2007, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 118



Вот эта часть:
Код

                   Container content2 = getContentPane();
                   content2.add(field);
                   this.setSize(400, 400);
                   setVisible(true);


По умолчанию компонент добавляется в центр - а в центре уже дерево

content.add(new JScrollPane(tree), BorderLayout.CENTER);

Сделайте хотя так

content2.add(field, BorderLayout.WEST);


PM MAIL WWW ICQ   Вверх
JLigero
Дата 24.8.2007, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 23.8.2007

Репутация: нет
Всего: нет



Вот вариант:
Код

import java.awt.*;
import javax.swing.*;
import javax.swing.tree.*;

public class Application extends JFrame {

       public Application() {
           super("FeedBar 2");
           setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
           
                              // create menu
           JMenuItem j1 = new JMenuItem("Inpmort XML");
           JMenuItem j2 = new JMenuItem("Exit");
           JMenuBar menubar = new JMenuBar();
           JMenu menu = new JMenu("File");
           menu.add(j1);
           menu.add(j2);
           menu.addSeparator();
           menubar.add(menu);

                   // prepare user interface
           BorderLayout bord = new BorderLayout();
           setLayout(bord);
           setJMenuBar(menubar);
           pack();
           Object[] hierarchy = {1,2};
           Container content = getContentPane();
           DefaultMutableTreeNode root = processHierarchy(hierarchy);
           JTree tree = new JTree(root);

          JTextArea field = new JTextArea();

           JSplitPane splitPane = new JSplitPane(
                   JSplitPane.HORIZONTAL_SPLIT, true,
                   new JScrollPane(tree),
                   new JScrollPane(field));
           content.add(splitPane, BorderLayout.CENTER);
           
           setSize(400, 400);
           setVisible(true);
       }
    public static void main(String[] arguments) {
        Application app = new Application();
    }
    private DefaultMutableTreeNode processHierarchy(Object[] hierarchy) {
        DefaultMutableTreeNode node =
                new DefaultMutableTreeNode(hierarchy[0]);
        DefaultMutableTreeNode child;
        for(int i=1; i<hierarchy.length; i++) {
            Object nodeSpecifier = hierarchy[i];
            if (nodeSpecifier instanceof Object[])  
                child = processHierarchy((Object[])nodeSpecifier);
            else
                child = new DefaultMutableTreeNode(nodeSpecifier); 
            node.add(child);
        }
        return(node);
    }  
}


PM MAIL   Вверх
ChessMaster
Дата 24.8.2007, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 1.8.2007

Репутация: нет
Всего: нет



Спасибо. Единственное, у меня три очень маленький, а эрия большая, не подскажите как мне разделить форму на попалам?
PM MAIL   Вверх
dorogoyIV
Дата 24.8.2007, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



ну тут уже наверное пойдет setPreferredSize, Minimum Maximum...
или лайоты. 
советую упростить код - потренируйся на простецком с лайотами и с сайзами...
PM MAIL   Вверх
AntonSaburov
Дата 24.8.2007, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 118



переопределить для дерева и для текстэрия getPreferredSize() - пусть возвращают половину ширины панели на которой лежат
PM MAIL WWW ICQ   Вверх
ChessMaster
  Дата 24.8.2007, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 1.8.2007

Репутация: нет
Всего: нет



Не получается
Код


import java.awt.*;
import javax.swing.*;
import javax.swing.tree.*;
import model.*;
import java.util.*;

public class Application extends JFrame {
    
       private class myJTree extends JTree{
           myJTree(DefaultMutableTreeNode d){
               super(d);
           }
           public Dimension getPreferedSize(){            
               return new Dimension(300,400);
           }
       }
       
       private class myJTextArea extends JTextArea{
           public Dimension getPreferedSize(){            
               return new Dimension(300,400);
           }
       }

       public Application(Center center) {
                   super("FeedBar 2");
                   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                   JMenuItem j1 = new JMenuItem("Inpmort XML");
                   JMenuItem j2 = new JMenuItem("Exit");
                   JMenuBar menubar = new JMenuBar();
                   JMenu menu = new JMenu("File");
                   menu.add(j1);
                   menu.add(j2);
                   menu.addSeparator();
                   menubar.add(menu);
                                 
                   BorderLayout bord = new BorderLayout();
                   setLayout(bord);
                   setJMenuBar(menubar);
                   pack();
                   
                   Object[] hierarchy = this.buildHierarchy(center);
                   Container content = getContentPane();
                   DefaultMutableTreeNode root = processHierarchy(hierarchy);
                   myJTree tree = new myJTree(root);
                   content.add(new JScrollPane(tree), BorderLayout.WEST);
                   
                   myJTextArea field = new myJTextArea();
                   content.add(field,BorderLayout.EAST);
                   
                   this.setSize(600, 400);
                   setVisible(true);
               }
               
               private DefaultMutableTreeNode processHierarchy(Object[] hierarchy) {
                DefaultMutableTreeNode node = new DefaultMutableTreeNode(hierarchy[0]);
                DefaultMutableTreeNode child;
                     for(int i=1; i<hierarchy.length; i++) {
                         Object nodeSpecifier = hierarchy[i];
                         if (nodeSpecifier instanceof Object[])  // Ie node with children
                             child = processHierarchy((Object[])nodeSpecifier);
                         else {
                             child = new DefaultMutableTreeNode(nodeSpecifier); // Ie Leaf
                         }
                         node.add(child);
                     }
                return(node);
               }
               
               
              /* 
               public Object[] getCourse(Course course) {
                int e = course.getTasks().size();
                Object[] tasks = new Object[e+1];
                tasks[0] = course.getTitle();                      
                for (int i = 0; i < e; i++) {
                    
                }
                
                return tasks;
               }
               
               */
               
               
               
               private Object[] buildHierarchy(Center center) {
                int e = center.getStudents().size();
                Object[] treeContent = new Object[e+1];
                treeContent[0] = "Students";            
                
                for (int i = 0; i < e; i++) {        
                    Student student = center.getStudents().get(i);
                    treeContent[i+1] = this.buildStudent(student);
                }                
                return treeContent;
               }
               
               private Object[] buildStudent(Student student) {
                Curriculumn curriculumn = student.getCurriculumn();
                Object[] oCurriculumn = new Object[2];
                oCurriculumn[0] = student.getFullName();
                oCurriculumn[1] = this.buildCurriculumn(curriculumn);
                return oCurriculumn;
               }
               
               private Object[] buildCurriculumn(Curriculumn curriculumn) {
                int e = curriculumn.getCourses().size();
                Object[] oCourses = new Object[e+1];
                oCourses[0] = curriculumn.getTitle();
                   
                for (int i = 0; i < e; i++) {
                    Course course = curriculumn.getCourses().get(i);
                    oCourses[i+1] = this.buildCourse(course);
                }    
                return oCourses;
               }
                
               private Object[] buildCourse(Course course) {
                int e = course.getTasks().size();
                Object[] oTasks = new Object[e+1];
                oTasks[0] = course.getTitle();
                
                for (int i = 0; i < e; i++) {
                    Task task = course.getTasks().get(i);
                    oTasks[i+1] = this.buildTask(task);
                }
                return oTasks;
               }
               
               private Object[] buildTask(Task task) {
                Object[] taskName = new Object[1]; 
                taskName[0] = task.getTitle();
                return taskName;
               }

}


PM MAIL   Вверх
AntonSaburov
Дата 24.8.2007, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 118



Во-первых - внимательнее надо быть - getPreferredSize()

Во-вторых - смысл давать пример, который нельзя даже собрать.

Во-третьих - вот пример для пробы

Код

import java.awt.*;
import javax.swing.*;
import javax.swing.tree.*;
import java.util.*;

public class Application extends JFrame 
{
  private class MyJTextArea extends JTextArea
  {
    public Dimension getPreferredSize()
    {
      if(getParent()!=null) {
        return new Dimension(getParent().getWidth()/2, 0);
      }
      else return super.getPreferredSize();
    }
  }

  public Application() 
  {
    JTree tree = new JTree();
    getContentPane().add(new JScrollPane(tree), BorderLayout.CENTER);
                   
    MyJTextArea field = new MyJTextArea();
    getContentPane().add(field,BorderLayout.EAST);
                   
    this.setSize(600, 400);
    setVisible(true);
  }

  public static void main(String[] arg)
  {
    Application a = new Application();
    a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    a.setVisible(true);
  }
               
}

PM MAIL WWW ICQ   Вверх
dorogoyIV
Дата 24.8.2007, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



Цитата(AntonSaburov @  24.8.2007,  16:26 Найти цитируемый пост)
Во-вторых - смысл давать пример, который нельзя даже собрать.

во во!!! и я то же самое хотел сказать!
откуда людям знать - что у тебя за классы "myJTree" например...???
PM MAIL   Вверх
AntonSaburov
Дата 24.8.2007, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 118



Цитата(dorogoyIV @  24.8.2007,  16:33 Найти цитируемый пост)
что у тебя за классы "myJTree" например...??? 

Да этот класс как раз есть - там другие какие-то есть. Я из выкинул.
PM MAIL WWW ICQ   Вверх
math64
Дата 26.8.2007, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 5
Всего: 72



Если нужно делить ровно пополaм:
Код

  Container content = getContentPane();
  content.setLayout(new GridLayout(1,2));
  DefaultMutableTreeNode root = processHierarchy(hierarchy);    
  JTree tree = new JTree(root);    
  content.add(new JScrollPane(tree));    
  JTextArea field = new JTextArea();    
  content.add(field);    



Это сообщение отредактировал(а) math64 - 26.8.2007, 01:33
PM   Вверх
dorogoyIV
Дата 26.8.2007, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



math64, маленько ошибся ты  smile 
у тебя гридлайот, а ты в центр добавляешь  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.1193 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.