Witajcie,
Napisałem fragment kodu który wyświetla tablicę z danymi. Tablica jest typu obiekt z danymi: String, Integer, Double oraz Boolean. I to właśnie z tym ostatnim mam problem. Po wyświetleniu tabelki dane typu Boolean wyświetlają się jako CheckBox i wszystko jest ok (właśnie na tym efekcie mi zależy). Postanowiłem przenieść kod na okno typu JFrame Form, gdzie za pomocom kreatora dodałem tabelkę i myślałem że efekt będzie identyczny, jednak w miejscu kolumny z danymi typu boolean zamiast ChecBox widzę tylko wartości w String. Sprawa mnie dziwi ponieważ kod prawie identyczny.
public class TableCheckBox extends JFrame
{
public TableCheckBox()
{
Object[] columnNames = {"Company", "Shares", "Price", "Boolean"};
Object[][] data = {
{ "IBM", new Integer(1000), new Double(80.50), false},
{ "MicroSoft", new Integer(2000), new Double(6.25), true},
{ "Apple", new Integer(3000), new Double(7.35), true},
{ "Nortel", new Integer(4000), new Double(20.00), false}
};
DefaultTableModel model = new DefaultTableModel(data, columnNames);
JTable table = new JTable(model) {
public Class getColumnClass(int column) {
switch (column) {
case 0:
return String.class;
case 1:
return Integer.class;
case 2:
return Double.class;
case 3:
return Boolean.class;
default:
return String.class;
}
}
};
JScrollPane scrollPane = new JScrollPane(table);
getContentPane().add(scrollPane);
}
Wywołanie:
public static void main(String[] args)
{
TableCheckBox frame = new TableCheckBox();
frame.pack();
frame.setVisible(true);
}
W powyższym przykładzie wszystko działa prawidłowo, w przypadku okna typu JFrame Form kod wygląda tak:
public class Okno extends javax.swing.JFrame
{
public Okno()
{
Object[] columnNames = {"Company", "Shares", "Price", "Boolean"};
Object[][] data =
{
{ "IBM", new Integer(1000), new Double(80.50), false},
{ "MicroSoft", new Integer(2000), new Double(6.25), true},
{ "Apple", new Integer(3000), new Double(7.35), true},
{ "Nortel", new Integer(4000), new Double(20.00), false}
};
DefaultTableModel model = new DefaultTableModel(data, columnNames);
jTable = new JTable(model) {
public Class getColumnClass(int column)
{
switch (column) {
case 0:
return String.class;
case 1:
return Integer.class;
case 2:
return Double.class;
case 3:
return Boolean.class;
default:
return String.class;
}
}
};
initComponents();
jTable.setModel(model);
}
Nie mam pomysłu na rozwiązanie problemu, będę wdzięczny za rade.
dodanie znaczników <code class="java"> - Furious Programming