Prośba o podpowiedz przy tworzeniu modelu tabelki w JFrame Form.

0

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

0

Jakoś dałem sobie rade, zamieszczam kod może komuś będzie pomocny:

jTable.setModel(new javax.swing.table.DefaultTableModel(
            data,
            columnNames
        ) {
            Class[] types = new Class [] 
            {
                java.lang.String.class, java.lang.Integer.class, java.lang.Double.class, java.lang.Boolean.class
            };

            public Class getColumnClass(int columnIndex) {return types [columnIndex];}
        });

1 użytkowników online, w tym zalogowanych: 0, gości: 1