Estoy haciendo una aplicacion (que necesito terminar con urgencia ) la cual consiste en tener un jcombobox con 7 opciones, y una tabla, por defecto cuanco llamo a este formulario el jcomobox esta en la primer posicion y convoco a la jtable asociada a ese dato del jcombobox. El problema consiste en que si selecciono otro item del jcombobox la tabla no se actualiza, es decir los registros que aparecen son los mismos, pero si los registros q asocio son mas que los primeros, entonces en la tabla me aparecen los primeros registros y los ultimos, es decir no me sobreescribe en los datos antiguos.
por ejemplo selecciono en el jcombobox auto, y los registros de la tabla son ford, renault
Luego selecciono motos y los registros son yamaha, Honda, Honda vice
en este caso me aparecen los registros asi: ford, renault, Honda vice.
Aqui le dejo el codigo, espero que entiendan mi pregunta, y si alguien tiene ideas son bienvenidas
Código PHP:
public class buscarc extends javax.swing.JFrame implements ActionListener {
private Connection conn;
private TableRowSorter<T_carrera> sorter;
int area;
String carrera, id_carrera;
/** Creates new form buscarc */
public buscarc() throws SQLException {
mdbc=new DBconnection();
mdbc.init();
conn=mdbc.getMyConnection();
stmt = conn.createStatement();
area=1;
initComponents();
cargar_area();
area_cbox.addActionListener(this);
}
private void cargar_area() throws SQLException{
rs=stmt.executeQuery("Select A.nombre_areas from areas as A");
ResultSets=new ArrayList<String[]>();
try{
while(rs.next()){
String[] row={ rs.getString("nombre_areas")};
ResultSets.add(row);
}
}
catch(Exception e){
System.out.println("Problemas de Estructura de Tabla");
}
rs.first();
area_cbox.addItem(rs.getString("nombre_areas"));
while(rs.next()){
area_cbox.addItem(rs.getString("nombre_areas"));
}
}
public void actionPerformed(ActionEvent e) {
System.out.println(area_cbox.getSelectedItem());
area= area_cbox.getSelectedIndex();
area= area+1;
System.out.println(area);
filtrado();
}
private void newFilter() {
RowFilter rf = null;
//If current expression doesn't parse, don't update.
try {
rf = RowFilter.regexFilter(filtro.getText(), 1);
} catch (java.util.regex.PatternSyntaxException e) {
return;
}
sorter.setRowFilter(rf);
}
public String quotate(String content){
return "'"+content+"'";
}
private void filtrado(){
T_carrera model = new T_carrera(area);
sorter = new TableRowSorter<T_carrera>(model);
jTable1.setRowSorter(sorter);
jTable1.getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
public void valueChanged(ListSelectionEvent event) {
int viewRow = jTable1.getSelectedRow();
if (viewRow < 0) {
//No seleccione una fila.
} else {
int modelRow =0;
id_carrera=(String.valueOf(jTable1.getValueAt(viewRow,modelRow)));
modelRow =1;
carrera=(String.valueOf(jTable1.getValueAt(viewRow,modelRow)));
}
}
}
);
filtro.getDocument().addDocumentListener(
new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
newFilter();
}
public void insertUpdate(DocumentEvent e) {
newFilter();
}
public void removeUpdate(DocumentEvent e) {
newFilter();
}
});
}
}
Código PHP:
public class T_carrera extends AbstractTableModel{
private int colnum=2;
private int rownum;
private ResultSet rs;
private java.sql.Statement stmt;
private DBconnection mdbc;
private boolean DEBUG=false;
private String[] colNames={"N°","Carreras"};
private ArrayList<String[]> ResultSets;
public T_carrera(int area) {
mdbc= new DBconnection();
mdbc.init();
Connection conexion=mdbc.getMyConnection();
try{
stmt= conexion.createStatement();
}catch (SQLException ex) {
ex.printStackTrace();
}
rs=null;
System.out.println(area);
try{
rs=stmt.executeQuery("Select C.id_carrera, C.nombre_carrera, C.id_areas from carrera as C where C.id_areas='"+area+"'order by C.id_carrera");
}
catch(SQLException e){}
ResultSets=new ArrayList<String[]>();
try{
while(rs.next()){
String[] row={
rs.getString("id_carrera"),rs.getString("nombre_carrera")};
System.out.println(rs.getString("id_carrera"));
System.out.println(rs.getString("nombre_carrera"));
ResultSets.add(row);
}
}
catch(Exception e){
System.out.println("Problemas de Estructura de Tabla al cargar tabla");
}
}
public Object getValueAt(int rowindex, int columnindex) {
String[] row=ResultSets.get(rowindex);
return row[columnindex];
}
public int getRowCount() {
return ResultSets.size();
}
public int getColumnCount() {
return colnum;
}
public String getColumnName(int param) {
return colNames[param];
}
public boolean isCellEditable(int row, int col) {
return false;
}
public void setValueAt(Object value, int row, int col) {
if (DEBUG) {
System.out.println("Setting value at " + row + "," + col
+ " to " + value
+ " (an instance of "
+ value.getClass() + ")");
}
String[] data=ResultSets.get(row);
data[row]= (String) value;
fireTableCellUpdated(row, col);
if (DEBUG) {
System.out.println("New value of data:");
printDebugData();
}
}
private void printDebugData() {
int numRows = getRowCount();
int numCols = getColumnCount();
for (int i=0; i < numRows; i++) {
System.out.print(" row " + i + ":");
for (int j=0; j < numCols; j++) {
System.out.print(" " + ResultSets.get(i));
}
System.out.println();
}
System.out.println("--------------------------");
}
}