No se ordena el JTable con un clic en el header

matiasmilesi
11 de Septiembre del 2008
Buenas, gente vengo a pedirles ayuda, ya que no se cómo solucionar esto.
Yo a principio de año había ingresado la siguiente línea de código a mi clase, logrando la ordenación de las filas de un JTable mediante un clic en el header de la columna.
"jTable.setAutoCreateRowSorter(true);"

Tuve problemas con virus, lo cual me obligó a formatear el disco, igual tenía back up del código fuente.
cuando volví a instalar eclipse, crear la base de datos del programa, e intentar correrlo, NO ME ORDENA LAS FILAS haciendo clic en los headers.
¿Alguien puede ayudarme? les paso el código de la clase para que vean.

"INICIO"

package Informes;


import javax.swing.JFrame;
import javax.swing.JDesktopPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.*;
import javax.swing.JLabel;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.Toolkit;
import javax.swing.JButton;
import java.awt.ComponentOrientation;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.SwingConstants;
import java.io.IOException;
import java.lang.String;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import javax.swing.JScrollBar;
import javax.swing.DefaultBoundedRangeModel;
import javax.swing.table.DefaultTableModel;
import DB.ManejadorDB;

import ventanas.ClasePrincipal;
import ventanas.ProgramaPrincipal;

import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;




public class RegistroDeBusqueda extends JFrame {

private JDesktopPane jDesktopPane = null;
private JScrollPane jScrollPane = null;
private JTable jTable = null;
private String[] titColumna = {"PROPIETARIO", "CARAVANA CAMPO", "CARAVANA SENASA", "CATEGORÍA", "NOMBRE","RAZA","FECHA INGRESO","ORIGEN","PESO AL INICIO","PESO ACTUAL","ESTADO SANITARIO","PADRE","TIPO DE FECUNDACIÓN","MADRE","ESTADO","DENTICIÓN","DESTINO"};
private String[][] datoColumna = {};
private JLabel establecimiento = null;
private JLabel jLabel1 = null;
private JLabel jLabel2 = null;
private JLabel ubicacion = null;
private JLabel jLabel3 = null;
private JLabel renspa = null;
private JButton jButton = null;
private JButton jButton1 = null;
private JLabel fecha = null;
private JLabel jLabel = null;
private JScrollBar jScrollBar = null;
//private JScrollBar jScrollBar1 = null;
private JScrollBar jScrollBar2 = null; // @jve:decl-index=0:visual-constraint=""
private Exportadora exportadora = new Exportadora();
private String[] datos = {"","",""};
private ManejadorDB manejadorDB = new ManejadorDB();
private DefaultTableModel modelo = null;

private ArrayList array = new ArrayList();
ResultSet resultado;


/**
* This is the default constructor
* @throws SQLException
* @throws ClassNotFoundException
*/
public RegistroDeBusqueda() throws ClassNotFoundException, SQLException {
super();
initialize();
}

/**
* This method initializes this
*
* @return void
* @throws SQLException
* @throws ClassNotFoundException
*/
private void initialize() throws ClassNotFoundException, SQLException {
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.addWindowListener(l);
this.setContentPane(getJDesktopPane());
this.setSize(800, 600);
//Redimensiona la ventana en caso de ser necesario.
Dimension dScreenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension dFrameSize = this.getSize();
if (dFrameSize.height > dScreenSize.height) {
dFrameSize.height = dScreenSize.height;
}
if (dFrameSize.width > dScreenSize.width) {
dFrameSize.width = dScreenSize.width;
}
// Asigno la posisión de la ventana en la pantalla (en el centro de la pantalla
this.setLocation((dScreenSize.width - dFrameSize.width) / 2,(dScreenSize.height - dFrameSize.height) / 2);
this.setTitle("Registro Total de Rodeo");

}

WindowListener l = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
ClasePrincipal.programaP.setEnabled(true);
}
};

/**
* This method initializes jDesktopPane
*
* @return javax.swing.JDesktopPane
* @throws SQLException
* @throws ClassNotFoundException
*/
private JDesktopPane getJDesktopPane() throws ClassNotFoundException, SQLException {
if (jDesktopPane == null) {
modelo = new DefaultTableModel();

modelo.addColumn("PROPIETARIO");
modelo.addColumn("CARAVANA CAMPO");
modelo.addColumn("CARAVANA SENASA");
modelo.addColumn("CATEGORÍA");
modelo.addColumn("NOMBRE");
modelo.addColumn("RAZA");
modelo.addColumn("FECHA INGRESO");
modelo.addColumn("ORIGEN");
modelo.addColumn("PESO AL INICIO");
modelo.addColumn("PESO ACTUAL");
modelo.addColumn("ESTADO SANITARIO");
modelo.addColumn("PADRE");
modelo.addColumn("TIPO DE FECUNDACIÓN");
modelo.addColumn("CARAVANA SENASA MADRE");
modelo.addColumn("ESTADO");
modelo.addColumn("DENTICIÓN");
modelo.addColumn("DESTINO");


/***####################################*/

/* */


array = manejadorDB.rodeoTotal();
cargarTabla(array);
/**resultado = manejadorDB.rodeoTotal2(ProgramaPrincipal.renspaPrincipal);
cargarTabla2();*/
fecha = new JLabel();
fecha.setBounds(636,14,133,22);
fecha.setName("fecha");
fecha.setComponentOrientation(java.awt.ComponentOrientation.LEFT_TO_RIGHT);
Date aux = new Date();
fecha.setText(aux.toLocaleString());
renspa = new JLabel();
renspa.setBounds(246,78,203,22);
renspa.setAlignmentX(0.0F);
renspa.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
renspa.setText(ProgramaPrincipal.renspaPrincipal);
renspa.setFont(new Font("Times New Roman", Font.PLAIN, 14));
jLabel3 = new JLabel();
jLabel3.setBounds(77,78,92,22);
jLabel3.setText("RENSPA:");
jLabel3.setFont(new java.awt.Font("Times New Roman", java.awt.Font.PLAIN, 14));
ubicacion = new JLabel();
ubicacion.setBounds(246,45,203,22);
ubicacion.setAlignmentX(0.0F);
ubicacion.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
ubicacion.setText(ProgramaPrincipal.ubicacionPrincipal);
ubicacion.setFont(new Font("Times New Roman", Font.PLAIN, 14));
jLabel2 = new JLabel();
jLabel2.setBounds(77,45,92,22);
jLabel2.setFont(new java.awt.Font("Times New Roman", java.awt.Font.PLAIN, 14));
jLabel2.setText("Ubicación:");
jLabel1 = new JLabel();
jLabel1.setBounds(77,14,92,22);
jLabel1.setFont(new java.awt.Font("Times New Roman", java.awt.Font.PLAIN, 14));
jLabel1.setText("Establecimiento:");
establecimiento = new JLabel();
establecimiento.setBounds(246,14,203,22);
establecimiento.setAlignmentX(0.0F);
establecimiento.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
establecimiento.setFont(new java.awt.Font("Times New Roman", java.awt.Font.PLAIN, 14));
establecimiento.setText(ProgramaPrincipal.establecimientoPrincipal);
jLabel = new JLabel();
jLabel.setBounds(476,14,133,22);
jLabel.setText("Fecha: ");
jLabel.setComponentOrientation(java.awt.ComponentOrientation.RIGHT_TO_LEFT);
jLabel.setName("fecha");
datos[0] = establecimiento.getText();
datos[1] = ubicacion.getText();
datos[2] = renspa.getText();
jDesktopPane = new JDesktopPane();
jDesktopPane.setBackground(java.awt.Color.white);
jDesktopPane.add(getJScrollPane(), null);
jDesktopPane.add(establecimiento, null);
jDesktopPane.add(jLabel1, null);
jDesktopPane.add(jLabel2, null);
jDesktopPane.add(ubicacion, null);
jDesktopPane.add(jLabel3, null);
jDesktopPane.add(renspa, null);
jDesktopPane.add(getJButton(), null);
jDesktopPane.add(getJButton1(), null);
jDesktopPane.add(fecha, null);
jDesktopPane.add(jLabel, null);

}
return jDesktopPane;
}

/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setBounds(5,134,780,361);
jScrollPane.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
jScrollPane.setVerticalScrollBarPolicy(javax.swing.JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
jScrollPane.setAutoscrolls(true);
jScrollPane.setVerticalScrollBar(getJScrollBar());
jScrollPane.setHorizontalScrollBar(getJScrollBar2());
jScrollPane.setViewportView(getJTable());


}
return jScrollPane;
}

/**
* This method initializes jTable
*
* @return javax.swing.JTable
*/
private JTable getJTable() {
if (jTable == null) {


jTable = new JTable(modelo);
jTable.setAutoCreateColumnsFromModel(true);
jTable.setAutoscrolls(true);
jTable.setEnabled(false);
jTable.setName("Registro Total de Rodeo");
jTable.setAutoResizeMode(0);
//jTable.addMouseListenerToHeaderInTable(jTable);
jTable.setAutoCreateRowSorter(true);











}
return jTable;
}




/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setBounds(new java.awt.Rectangle(206,518,100,23));
jButton.setName("");
jButton.setHorizontalAlignment(SwingConstants.CENTER);
jButton.setHorizontalTextPosition(SwingConstants.LEFT);
jButton.setText("EXPORTAR");
jButton.setComponentOrientation(ComponentOrientation.UNKNOWN);
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
try {
exportadora.exportar(getJTable(), titColumna, datos,0);
} catch (RowsExceededException e1) {
e1.printStackTrace();
} catch (WriteException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
}
return jButton;
}

/**
* This method initializes jButton1
*
* @return javax.swing.JButton
*/
private JButton getJButton1() {
if (jButton1 == null) {
jButton1 = new JButton();
jButton1.setBounds(new java.awt.Rectangle(499,518,100,23));
jButton1.setName("");
jButton1.setHorizontalAlignment(SwingConstants.CENTER);
jButton1.setHorizontalTextPosition(SwingConstants.LEFT);
jButton1.setText("SALIR");
jButton1.setComponentOrientation(ComponentOrientation.UNKNOWN);
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
ClasePrincipal.programaP.setEnabled(true);
RegistroDeBusqueda.this.dispose();
}
});
}
return jButton1;
}

/**
* This method initializes jScrollBar
*
* @return javax.swing.JScrollBar
*/
private JScrollBar getJScrollBar() {
if (jScrollBar == null) {
jScrollBar = new JScrollBar();
jScrollBar.setVisible(true);
jScrollBar.setBlockIncrement(10);
jScrollBar.setBounds(new java.awt.Rectangle(762,2,16,760));
jScrollBar.setAutoscrolls(false);
//jScrollBar.setOrientation(javax.swing.JScrollBar.VERTICAL);
}
return jScrollBar;
}

/**
* This method initializes jScrollBar2
*
* @return javax.swing.JScrollBar
*/
private JScrollBar getJScrollBar2() {
if (jScrollBar2 == null) {
DefaultBoundedRangeModel defaultBoundedRangeModel = new DefaultBoundedRangeModel();
defaultBoundedRangeModel.setExtent(10);
jScrollBar2 = new JScrollBar();
jScrollBar2.setAutoscrolls(false);
jScrollBar2.setVisible(true);
jScrollBar2.setBounds(new java.awt.Rectangle(2,762,760,16));
jScrollBar2.setModel(defaultBoundedRangeModel);
jScrollBar2.scrollRectToVisible(new Rectangle(20,40));
//jScrollBar2.setSize(new java.awt.Dimension(16,48));
//jScrollBar2.setLocation(new java.awt.Point(600,5));
//jScrollBar2.setMaximum(0);
jScrollBar2.setOrientation(javax.swing.JScrollBar.HORIZONTAL);
}
return jScrollBar2;
}

private void cargarTabla(ArrayList arreglo){
String elem = null;

for (int i = 0 ; i < arreglo.size(); i = i + 17)
{
Object [] fila = new Object[17];
for (int j = 0;j < 17; j++)
{
if (arreglo.get(i + j) != null)
if (!arreglo.get(i + j).toString().equals("null"))
elem = (arreglo.get(i + j)).toString();
else
elem = null;
else
elem = null;
fila[j] = elem;
}
modelo.addRow(fila);
}

}

private void cargarTabla2() throws SQLException{

while (resultado.next())
{
Object [] fila = new Object[17]; //numeroColumnas es el número de columnas de la tabla y del ResultSet
for (int i=0;i<17;i++)
fila[i] = resultado.getObject(i+1); // El ResultSet comienza en 1 en vez de en 0
modelo.addRow (fila);
}
resultado.close();
}

/**
* Launches this application
* @throws SQLException
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws ClassNotFoundException, SQLException {
RegistroDeBusqueda application = new RegistroDeBusqueda();
application.show();
}

}

DESDE YA MUCHAS GRACIAS.