JTree + JTable

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”, “Patient’s Birth Date”, “DA”, “1”, null},
    {“0010,0040”, “Patient’s 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

}