Добавление Java к данным таблицы - PullRequest
0 голосов
/ 30 августа 2011

Может кто-нибудь сказать мне, где моя ошибка? Я пытаюсь заполнить таблицу данными, но не могу, всегда получаю пустую таблицу. Вот мой код с рамкой:

import java.util.*;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;


public class Rinktis extends JFrame {
    private final JScrollPane scrollPane = new JScrollPane();
    private JTable table;

        public Rinktis() 
        {

        super();
        setBounds(100, 100, 861, 375);      
        try {
            jbInit();
        } catch (Throwable e) {
            e.printStackTrace();
        }       
    }

    Vector<Vector<String>> data1 =new Vector<Vector<String>>(); 
Vector<String> heading1 = new Vector<String>();
    public void tab(Vector heading, Vector data)
    {   System.out.println(data);
        System.out.println(heading);    
        data1=data;
        heading1=heading;
        System.out.println(data1);
        System.out.println(heading1);
    }   
    private void jbInit() throws Exception {
        getContentPane().setLayout(null);
        getContentPane().add(scrollPane);
        scrollPane.setBounds(10, 10, 825, 176);     

        table = new JTable(data1,heading1);
        scrollPane.setViewportView(table);
    }

}

Вот как я называю это из другого кадра:

    protected void rinktisButton_1_actionPerformed(ActionEvent e) 
{       Rinktis frame = new Rinktis();
        frame.setVisible(true); 
    try {
        db.getClients();
    } catch (Exception e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
}

и с db.getClients(); звоню rinktis.tab(columnHeads,v); System.out.println дает мне все данные правильно, но таблица пуста.

Ответы [ 3 ]

2 голосов
/ 30 августа 2011

Проблема в том, что таблица не знает, что вы изменили данные.Вы можете загрузить свои данные при создании таблицы.Тогда это должно появиться очень хорошо (возможно, попробуйте это в первую очередь).Затем на втором шаге вы должны работать непосредственно с табличной моделью и изменить там данные.Всякий раз, когда вы делаете это, вы можете уведомить таблицу об обновлении.

В качестве альтернативы, если вы уже знаете свой заголовок, вы можете установить его и добавить данные только позже.Это также должно работать.Однако я не рекомендую это.

2 голосов
/ 30 августа 2011

измените функцию вкладки так:

public void tab(Vector heading, Vector data)
    {       
        table.setModel(new DefaultTableModel(data,heading) );
    }   
2 голосов
/ 30 августа 2011

Для получения серьезного ответа вам необходимо опубликовать SSCCE .В любом случае кажется, что вы передаете неправильный тип в конструктор JTable .

Вам нужно передать 2d массив объектов (Object [][]) или Vector<Vector<Object>> не простой 1D Vector, так же, как для TableHeader

Я думаю, что здесь проблема:

table = new JTable(data1, heading1); 
      //data1 need to of type Object[][] or Vector<Vector<Object>>
      //heading1 need to of type String[] or Vector<String>  

Вот учебник .

...