1

DAOファクトリを使用してデータベースからデータを取得しています。私がプログラムを実行しているとき、データは印刷行に表示されているので、彼はそれをデータベースから取り出しています。しかし、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();

      }




    }
4

1 に答える 1

3

は、テーブルモデルの列と行を表す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
    }

}

時間をかけて、表の使用方法を読んでください。

于 2012-11-22T08:53:45.110 に答える