Данные не отображаются в JTable

Я использую DAO Factory для получения данных из базы данных. Когда я запускаю свою программу, данные отображаются в строке печати, поэтому он получает их из базы данных. Но я хочу, чтобы он отображался в моем JTable, но он пуст, и я не знаю, как его заполнить.

Код JFrame:

package View;

import java.awt.Container;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.WindowConstants;
import javax.swing.table.TableModel;

import Controller.VerwijderController;
import Model.OefeningenListModel;
import Model.OefeningenTableModel;

public class VerwijderenHome extends JFrame {

    private JList LijstOefening;
    private JScrollPane jScrollPane1;
    private Container window = getContentPane();
    private JButton delete;
    private VerwijderController Controller;
    private JTable tabel;

    public VerwijderenHome()
    {
        initGUI();
    }

    public void addDeleteListener(ActionListener a){
        delete.addActionListener(a);
    }

    private void initGUI() {
        setPreferredSize(new Dimension(800, 600));
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setLayout(null);
        setVisible(true);

        JTable table = new JTable(new OefeningenTableModel());              
        JScrollPane scrollPane = new JScrollPane(table);  
        scrollPane.setBounds(50, 50, 300, 60);
        window.add(scrollPane);

        delete = new JButton("Delete");
        delete.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        delete.setBounds(50, 265, 100, 30);
        window.add(delete);

        pack();


        Controller = new VerwijderController();
        addDeleteListener(Controller);

    }

    public JButton getDelete(){
        return delete;
    }

    public JList getLijst()
    {
        return LijstOefening;


}
    }

Код DefaultTableModel?? (Не знаю, должен ли я использовать это)

package Model;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Vector;

import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;

import datapackage.DAOFactory;

public class OefeningenTableModel extends DefaultTableModel {

      ArrayList<Oefening> oefeningen;

      public OefeningenTableModel(){

          oefeningen = DAOFactory.getFactory(0).getIDAOOefening().load();

      }




    }

person Ismail    schedule 22.11.2012    source источник
comment
можете ли вы распечатать свой DAO и посмотреть, заполняются ли значения или нет   -  person Srinivas B    schedule 22.11.2012
comment
Пожалуйста, изучите соглашения об именах в Java и придерживайтесь их.   -  person kleopatra    schedule 22.11.2012


Ответы (1)


DefaultTableModel поддерживается Vector, представляющим столбцы и строки модели таблицы.

Вы предоставили свои собственные ArrayList объектов, но не переопределили методы, которые потребуются для предоставления этих данных обратно в таблицу. DefaultTableModel понятия не имеет о вашем ArrayList

Попробуйте переопределить некоторые из следующих действий;

public class OefeningenTableModel extends AbstractTableModel {

    ArrayList<Oefening> oefeningen;

    public OefeningenTableModel(){
        oefeningen = DAOFactory.getFactory(0).getIDAOOefening().load();
    }    

    @Override
    public int getRowCount() {
        return oefeningen.getSize();
    }

    @Override
    public int getColumnCount() {
        // You'll need to fill this out to meet your requirements
    }

    @Override
    public String getColumnName(ing column) {
        // You'll need to fill this out to meet your requirements
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        // You'll need to fill this out to meet your requirements
    }

}

Потратьте время на прочтение Как использовать таблицы.

person MadProgrammer    schedule 22.11.2012
comment
Исмаил: Также рассмотрите AbstractTableModel, показанный здесь. - person trashgod; 22.11.2012