Imam sledeći kod:
Code:
.......
String sql = "SELECT id, sifra, naziv, cena, opis FROM Tabela WHERE id_kategorije = ?";
pst = conn.prepareStatement(sql);
pst.setString(1, neka_vrednost_kategorije);
rs = pst.executeQuery();
Tbl_Roba.setModel(DbUtils.resultSetToTableModel(rs));
TableColumn col0 = Tbl_Roba.getColumnModel().getColumn(0); /* Integer */
col0.setPreferredWidth(10);
TableColumn col1 = Tbl_Roba.getColumnModel().getColumn(1); /* String */
col1.setPreferredWidth(10);
TableColumn col2 = Tbl_Roba.getColumnModel().getColumn(2); /* String */
col2.setPreferredWidth(300);
TableColumn col3 = Tbl_Roba.getColumnModel().getColumn(3); /* Double */
col3.setPreferredWidth(20);
TableColumn col4 = Tbl_Roba.getColumnModel().getColumn(4); /* String */
col4.setPreferredWidth(20);
Tbl_Roba.getColumnClass(0).cast(Integer.class); /* Ovo sam negde našao na netu, ali izgleda da ne radi */
Tbl_Roba.getColumnClass(3).cast(Double.class);
Tbl_Roba.setAutoCreateRowSorter(true);
........
.......
String sql = "SELECT id, sifra, naziv, cena, opis FROM Tabela WHERE id_kategorije = ?";
pst = conn.prepareStatement(sql);
pst.setString(1, neka_vrednost_kategorije);
rs = pst.executeQuery();
Tbl_Roba.setModel(DbUtils.resultSetToTableModel(rs));
TableColumn col0 = Tbl_Roba.getColumnModel().getColumn(0); /* Integer */
col0.setPreferredWidth(10);
TableColumn col1 = Tbl_Roba.getColumnModel().getColumn(1); /* String */
col1.setPreferredWidth(10);
TableColumn col2 = Tbl_Roba.getColumnModel().getColumn(2); /* String */
col2.setPreferredWidth(300);
TableColumn col3 = Tbl_Roba.getColumnModel().getColumn(3); /* Double */
col3.setPreferredWidth(20);
TableColumn col4 = Tbl_Roba.getColumnModel().getColumn(4); /* String */
col4.setPreferredWidth(20);
Tbl_Roba.getColumnClass(0).cast(Integer.class); /* Ovo sam negde našao na netu, ali izgleda da ne radi */
Tbl_Roba.getColumnClass(3).cast(Double.class);
Tbl_Roba.setAutoCreateRowSorter(true);
........
DbUtils ima sledeci kod
Code:
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
public class DbUtils {
public static TableModel resultSetToTableModel(ResultSet rs) {
try {
ResultSetMetaData metaData = rs.getMetaData();
int numberOfColumns = metaData.getColumnCount();
Vector columnNames = new Vector();
// Get the column names
for (int column = 0; column < numberOfColumns; column++) {
columnNames.addElement(metaData.getColumnLabel(column + 1));
}
// Get all rows.
Vector rows = new Vector();
while (rs.next()) {
Vector newRow = new Vector();
for (int i = 1; i <= numberOfColumns; i++) {
newRow.addElement(rs.getObject(i));
}
rows.addElement(newRow);
}
return new DefaultTableModel(rows, columnNames);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
public class DbUtils {
public static TableModel resultSetToTableModel(ResultSet rs) {
try {
ResultSetMetaData metaData = rs.getMetaData();
int numberOfColumns = metaData.getColumnCount();
Vector columnNames = new Vector();
// Get the column names
for (int column = 0; column < numberOfColumns; column++) {
columnNames.addElement(metaData.getColumnLabel(column + 1));
}
// Get all rows.
Vector rows = new Vector();
while (rs.next()) {
Vector newRow = new Vector();
for (int i = 1; i <= numberOfColumns; i++) {
newRow.addElement(rs.getObject(i));
}
rows.addElement(newRow);
}
return new DefaultTableModel(rows, columnNames);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
Ovo sve radi, ali mi sve kolone sortira kao string, pa imam i prvoj koloni gde je id tipa integer, sledeću kombinaciju:
1
100
10000
2
200
20000
itd....
Kako da podesim da mi se sortiraju određene kolone kao integer ili double.
Da li može da se napravi neka kombinacija bez promene DbUtils, jer mi je u svakoj narednoj tabeli drugačiji raspored kolona za integer, double ili string.
Hvala!