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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таблица - элемент дерева, Таблица - элемент дерева 
:(
    Опции темы
marik86
Дата 30.9.2008, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем привет! Разрабатываю дерево, элементами которого являеются таблицы. Т.е. при развертывании ноды, открывается список таблиц. Прикрепил код, который делаю. Что-то не работает. А именно не отображаются таблицы в дереве.
Если в двух словах, то делаю так. Переопеределяю класс JTree, в нем же переопределяю TreeCellRenderer.


Пожалуйста помогите!!!!!!!!!!!!!!!!!!!!!!!


Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  tabletreelast.rar 2,31 Kb
PM MAIL   Вверх
marik86
Дата 1.10.2008, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Может так проще будет.

package treetable;

import javax.swing.JTable;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.MutableTreeNode;
/**
 *
 * @author  tb
 */
public class jFrame extends javax.swing.JFrame {

    /** Creates new form jFrame */
    public jFrame() {
        initComponents();
        JTable table = new JTable(new String [][]{{"1", "2"}, {"3", "4"}}, new String [] {"c1", "c2"});
        DefaultMutableTreeNode main = new DefaultMutableTreeNode("main");
        main.add(new DefaultMutableTreeNode(table));
        JTreeTable tree = new JTreeTable();
        tree.setModel(new DefaultTreeModel(main));
        jScrollPane1.setViewportView(tree);
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(66, 66, 66)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 393, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(42, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(62, 62, 62)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 241, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(106, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new jFrame().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JScrollPane jScrollPane1;
    // End of variables declaration

}


---------------------------------------------------------------------


package treetable;

import java.awt.Component;
import javax.swing.JTree;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;

/**
 *
 * @author tb
 */
public class JTreeTable extends javax.swing.JTree{ 
    
    public JTreeTable(){
        super();
        this.setCellRenderer(new JTreeCellRendererExt());
    }
    
    public JTreeTable(DefaultTreeModel model){
        super(model);
        this.setCellRenderer(new JTreeCellRendererExt());
    }
    
    private DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
    
    public class JTreeCellRendererExt extends javax.swing.JTable
            implements javax.swing.tree.TreeCellRenderer{

        public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, 
                boolean leaf, int row, boolean hasFocus) {            
            if (!(value instanceof javax.swing.JTable))
                return renderer.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
            return this;
        }
    }  
}

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


Новичок



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

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



Люди, неужели никто не знает, как быть в данном случае? =)))
PM MAIL   Вверх
dorogoyIV
Дата 4.10.2008, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



чо то не получается  smile  , мож кто подскажет?

здесь надо три раза мышкой по листу щелкнуть, что бы таблица появилась:
Код

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

public class MyTree extends JFrame
{
 public MyTree()
 {
  JTree tree = new JTree();
  tree.setEditable(true);

  DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();

  MyEditor editor = new MyEditor(new JTable(2, 3));

  DefaultTreeCellEditor treeEditor =
          new DefaultTreeCellEditor(tree, renderer, editor);
  tree.setCellEditor(treeEditor);
  getContentPane().add(new JScrollPane(tree));
 }

 public static void main(String [] args)
 {
  JFrame f = new MyTree();
  f.setBounds(100, 100, 400, 300);
  f.setDefaultCloseOperation(3);
  f.setVisible(true);
 }
}

class MyEditor extends AbstractCellEditor
               implements TreeCellEditor
{
 JTable table;

 public MyEditor(JTable table)
 {
  this.table = table;
 }

 public Object getCellEditorValue()
 {
  return null;
 }

 public Component getTreeCellEditorComponent(JTree tree, Object value,
              boolean isSelected, boolean expanded, boolean leaf, int row)
 {
  if(leaf)
   return table;
  else
   return new JLabel(value.toString());
 }
}

PM MAIL   Вверх
Connie
Дата 6.10.2008, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



dorogoyIV
Цитата
здесь надо три раза мышкой по листу щелкнуть, что бы таблица появилась:
проще F2 нажать, но объясните мне, Холмс, от куда там, в том коротком примере взялись узлы дерева с именами colors, sports, food? А в них листы так же с именами?  smile 
PM MAIL WWW   Вверх
Старовъръ
Дата 6.10.2008, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Это стандартно делается, если дерево пустое. Наверное, что-то вроде демонстрации работы.

Это сообщение отредактировал(а) Старовъръ - 6.10.2008, 19:45
PM MAIL WWW   Вверх
Lisus
Дата 6.10.2008, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Старовъръ @  6.10.2008,  19:45 Найти цитируемый пост)
Это стандартно делается, если дерево пустое. Наверное, что-то вроде демонстрации работы.


Абсолютно верно.
Это дефалтовый набор узлов.
Если он тебе не нравиться создавай дерево с указанием своего коня.
PM MAIL   Вверх
Connie
Дата 8.10.2008, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот чего нашел
user posted image
http://java-treetable.vista-files.org/
Но это платная библиотека, как я понял

И вот
http://java.sun.com/products/jfc/tsc/articles/treetable1/

может поможет?
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0528 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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