| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: GUI и Java FX приложения > Таблица - элемент дерева |
| Автор: marik86 30.9.2008, 21:46 |
| Всем привет! Разрабатываю дерево, элементами которого являеются таблицы. Т.е. при развертывании ноды, открывается список таблиц. Прикрепил код, который делаю. Что-то не работает. А именно не отображаются таблицы в дереве. Если в двух словах, то делаю так. Переопеределяю класс JTree, в нем же переопределяю TreeCellRenderer. Пожалуйста помогите!!!!!!!!!!!!!!!!!!!!!!! |
| Автор: marik86 1.10.2008, 10:53 |
| Может так проще будет. 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; } } } |
| Автор: marik86 1.10.2008, 12:46 |
| Люди, неужели никто не знает, как быть в данном случае? =))) |
| Автор: dorogoyIV 4.10.2008, 19:21 | ||
| чо то не получается здесь надо три раза мышкой по листу щелкнуть, что бы таблица появилась:
|
| Автор: Connie 6.10.2008, 19:40 | ||
dorogoyIV,
|
| Автор: Старовъръ 6.10.2008, 19:45 |
| Это стандартно делается, если дерево пустое. Наверное, что-то вроде демонстрации работы. |
| Автор: Connie 8.10.2008, 10:41 |
Вот чего нашел![]() http://java-treetable.vista-files.org/ Но это платная библиотека, как я понял И вот http://java.sun.com/products/jfc/tsc/articles/treetable1/ может поможет? |