JTree + JTable

0 respostas
Flow

Pessoal estou com um probleminha ao utilizar os componentes JTree e JTable.

Primeiramente, deixe me explicar o que estou tentando fazer. Eu tenho uma JTree em que o usuario ao clicar em um dos NOD selecionado, deveria mudar uma suposta “tela do lado”. Essa tela nada mais é do que diferentes JTables sendo mostrada de acordo com o NOD (uma de cada vez é claro).

Meu problema é o seguinte, quando crio uma JTable assim que o evento onclick no NOD é selecionado, em seguinda quando clico em outro NOD, vem o tal ERRO. Não consigo desabilitar a JTable (já tentei usar o setEnable, setVisible, entre outros), porém, ele contiua lá. Se eu tento criar a tabela de novo usando o SetModel da JTable, ele cria outra tabela diferente. Mais a primeira ainda continua la.

Se alguem puder me ajudar, agradesceria muito.

Seguem em baixo o codigo

import java.awt.BorderLayout;

import java.awt.Panel;

import javax.swing.JMenuBar;

import javax.swing.JTable;

import javax.swing.JToolBar;

import javax.swing.JTree;

import javax.swing.table.DefaultTableModel;

import javax.swing.tree.DefaultMutableTreeNode;

import javax.swing.tree.DefaultTreeModel;

/*

  • NovoJFrame.java
  • Created on 26 de Fevereiro de 2008, 13:21
    */

/**
*

  • @author  marcelo.sekimoto
    
    */
    
    public class NovoJFrame extends javax.swing.JFrame
    
    {
    
    private     String lastSelected;
    
    private     Panel panelTable;
    
    private     JToolBar down;
    
    private     JTree tree;
    
    private     JMenuBar top;
    
    private     JTable table;
    
    private     DefaultMutableTreeNode patient, study, serie, image;
    
    private     DefaultTableModel model;
    
    private     javax.swing.JScrollPane jScrollPane1;
    
    private     javax.swing.JTable jTable1;
    
    /** Creates new form NovoJFrame */
    
    public NovoJFrame()
    
    {
    
    initComponents();
    
    criarArvore();
    
    criarBarra();
    
    criarTabelaSeries(30);
    
    }
    
    public void treeMouseClicked(java.awt.event.MouseEvent evt)
    
    {
    
    try
    
    {
    
    if ( tree.getLastSelectedPathComponent().toString() == Patient1 )
    
    {
    
    System.out.println(Paciente Selecionado);
    
    criarTabelaPaciente(30);
    
    }
    
    else if ( tree.getLastSelectedPathComponent().toString() == Study1)
    
    {
    
    System.out.println(Serie Selecionada);
    
    table.setVisible(false);
    
    }
    
    else if ( tree.getLastSelectedPathComponent().toString() == Series1  )
    
    {
    
    System.out.println(Estudo Selecionado);
    
    }
    
    else if ( tree.getLastSelectedPathComponent().toString() == Image001 )
    
    {
    
    System.out.println(Imagem Selecionada);
    
    }
    
    else
    
    {
    
    System.out.println(ERRO);
    
    }
    
    lastSelected = tree.getLastSelectedPathComponent().toString();
    
    }
    
    catch (NullPointerException e)
    
    {
    
    System.out.println(ERRO);
    
    }
    
    }
    
    public void criarArvore()
    
    {
    
    // Inicio do Jtree
    
    DefaultMutableTreeNode root = new DefaultMutableTreeNode( DICOMDIR );
    
    patient = new DefaultMutableTreeNode(Patient1);
    
    study = new DefaultMutableTreeNode( Study1 );
    
    serie = new DefaultMutableTreeNode( Series1 );
    
    image = new DefaultMutableTreeNode( Image001 );
    
    serie.add(image);
    
    image = new DefaultMutableTreeNode( Image002 );
    
    serie.add(image);
    
    image = new DefaultMutableTreeNode( Image003 );
    
    serie.add(image);
    
    study.add(serie);
    
    serie = new DefaultMutableTreeNode( Series2 );
    
    image = new DefaultMutableTreeNode( Image001 );
    
    serie.add(image);
    
    study.add(serie);
    
    patient.add(study);
    
    root.add(patient);
    
    tree = new JTree( new DefaultTreeModel( root ) );
    
    getContentPane().setLayout(null);
    
    getContentPane().add(tree);
    
    tree.setBounds(0, 0, 200, 600);
    
    tree.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
    
    getContentPane().add(tree, BorderLayout.WEST);
    
    // Fim do JTree
    
    // Inicio do evento JTree
     tree.addMouseListener(new java.awt.event.MouseAdapter()
     {
         public void mouseClicked(java.awt.event.MouseEvent evt)
         {
             treeMouseClicked(evt);
         }
     });
     // Fim evento no JTree
    

    }

    public void criarBarra()
    
    {
    
    panelTable = new Panel();
    
    panelTable.setBackground(java.awt.Color.gray);
    
    panelTable.setBounds(200, 0, 600, 30);
    
    getContentPane().add(panelTable);
    
    }
    
    public void criarTabelaSeries(int altTabela)
    
    {
    
    }
    
    public void criarTabelaPaciente (int altTabela)
    
    {
    
    DefaultTableModel model = new DefaultTableModel(new String[][]
    
    {
    
    {TAG, Attribute Name, VR, VM, VALUE},
    
    {0040,0002, Scheduled Procedure Step Start Date, DA, 1, null},
    
    {0040,0003, Scheduled Procedure Step Start Time, TM, 1, null},
    
    {0008,0050, Accession Number, SH, 1, null},
    
    {0008,0090, Referring Physician?s Name, PN, 1, null},
    
    {0010,0010, Patient?s Name, PN, 1, null},
    
    {0010,0020, Patient ID, LO, 1, null},
    
    {0010,0030, Patients Birth Date, DA, 1, null},
    
    {0010,0040, Patients Sex, CS, 1, null},
    
    {0008,0060, Modality, CS, 1, null},
    
    {0008,103E, Series Description, LO, 1, null},
    
    {0008,1030, Study Description, LO, 1, null},
    
    {0032,1033, Requesting Service, LO, 1, null}
    
    }, new String[] {TAG, Attribute Name, VR, VM, VALUE})
    
    {
    
    public boolean isCellEditable(int row, int column)
    
    {
    
    // se a coluna for diferente de 4 não podera ser editada
    
    if (column != 4)
    
    {
    
    return false;
    
    }
    
    return super.isCellEditable(row, column);
    
    }
    
    };
    
    table = new JTable(model);
    
    table.setBounds(201, altTabela, 600, 209);
    
    table.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
    
    getAccessibleContext().setAccessibleParent(tree);
    
    getContentPane().add(table);
    
    }
    

    /** 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.
      
      */
      
      // 
      
      private void initComponents()
      
      {
      
      jMenuBar1 = new javax.swing.JMenuBar();
      
      jMenu1 = new javax.swing.JMenu();
      
      jMenu2 = new javax.swing.JMenu();
      
      jMenu3 = new javax.swing.JMenu();
      
      setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
      
      setTitle(“Carestream Health - Conversor DicomDir”);
      
      setBounds(new java.awt.Rectangle(112, 84, 800, 600));
      
      setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
      
      setFocusTraversalPolicyProvider(true);
      
      setMinimumSize(new java.awt.Dimension(800, 600));
      
      setResizable(false);
      
      getAccessibleContext().setAccessibleParent(this);
      
      jMenuBar1.setToolTipText("");
      
      jMenu1.setText(“Novo”);
      
      jMenu1.setToolTipText(“Novo Arquivo”);
      
      jMenuBar1.add(jMenu1);
      
      jMenu2.setText(“Abrir”);
      
      jMenu2.setToolTipText(“Abrir Arquivo”);
      
      jMenuBar1.add(jMenu2);
      
      jMenu3.setText(Salvar);
      
      jMenu3.setToolTipText(Salvar Arquivo);
      
      jMenuBar1.add(jMenu3);
      

      setJMenuBar(jMenuBar1);

      javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
      
      getContentPane().setLayout(layout);
      
      layout.setHorizontalGroup(
      
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGap(0, 730, Short.MAX_VALUE)
      
      );
      
      layout.setVerticalGroup(
      
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGap(0, 521, Short.MAX_VALUE)
      
      );
      
      pack();
      
      }//
      

    /**

    • @param args the command line arguments
      */
      public static void main(String args[])
      {
      java.awt.EventQueue.invokeLater(new Runnable()
      {
      public void run()
      {
      new NovoJFrame().setVisible(true);
      }
      });
      }
    // Declaração de variáveis - não modifique
    
    private javax.swing.JMenu jMenu1;
    
    private javax.swing.JMenu jMenu2;
    
    private javax.swing.JMenu jMenu3;
    
    private javax.swing.JMenuBar jMenuBar1;
    
    // Fim da declaração de variáveis
    

}

Criado 3 de março de 2008
Respostas 0
Participantes 1