はこれを試してみてください:
import java.awt.Dimension;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
public class Main extends JFrame {
private JTable m_simpleTable;
private SimpleTableModel m_simpleTableModel;
public Main() {
m_simpleTableModel = new SimpleTableModel(getData());
m_simpleTable = new JTable(m_simpleTableModel);
JScrollPane scrollPane = new JScrollPane(m_simpleTable);
getContentPane().add(scrollPane);
}
public Vector getData(){
Vector dummyMacData = new Vector(10, 10);
dummyMacData.addElement(new Data(new Integer(100), "ABC", "11/12/2016","A+", "E"));
dummyMacData.addElement(new Data(new Integer(105), "XYZ", "20/01/2015","B-", "E"));
return dummyMacData;
}
public static void main(String[] arg) {
Main m = new Main();
m.setVisible(true);
m.setSize(new Dimension(600, 300));
m.validate();
}
class SimpleTableModel extends AbstractTableModel {
public String[] m_colNames = { "Student Id", "Name", "Date","Score", "" };
public Class[] m_colTypes = { Integer.class, String.class, String.class, String.class,
String.class };
Vector m_macDataVector;
public SimpleTableModel(Vector macDataVector) {
super();
m_macDataVector = macDataVector;
}
public int getColumnCount() {
return m_colNames.length;
}
public int getRowCount() {
return m_macDataVector.size();
}
public void setValueAt(Object value, int row, int col) {
Data macData = (Data) (m_macDataVector.elementAt(row));
switch (col) {
case 0:
macData.setStudentId((Integer) value);
break;
case 1:
macData.setName((String) value);
break;
case 2:
macData.setDate((String) value);
break;
case 3:
macData.setScore((String) value);
break;
case 4:
//macData.setE((String) value);
break;
}
}
public String getColumnName(int col) {
return m_colNames[col];
}
public Class getColumnClass(int col) {
return m_colTypes[col];
}
public Object getValueAt(int row, int col) {
Data macData = (Data) (m_macDataVector.elementAt(row));
switch (col) {
case 0:
return macData.getStudentId();
case 1:
return macData.getName();
case 2:
return macData.getDate();
case 3:
return macData.getScore();
case 4:
return null;//macData.getE();
}
return new String();
}
}
}
class Data {
private Integer studentId;
private String name;
private String date;
private String score;
private String e;
public Data() {
}
public Data(Integer aa, String bb, String cc, String dd, String ee) {
studentId = aa;
name = bb;
date = cc;
score = dd;
e = ee;
}
public Integer getStudentId() {
return studentId;
}
public void setStudentId(Integer studentId) {
this.studentId = studentId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getScore() {
return score;
}
public void setScore(String score) {
this.score = score;
}
}
2つのテーブル間でジョインを実行できるデータベース(他のジョインについては読んでください)の場合、Javaプログラムはジョインの結果をただ1つのテーブルと見なすことができます。それはあなたを通すだろうか? –
お返事ありがとうございます。私はジョイントを見て、インナーは私が望んでいた2つのテーブルからの列に参加しました、これは今、新しいテーブルですか?サービス内のデータベースの下にある「テーブル」セクションには表示されません。クエリなどでメインプログラムでどのように参照するのですか? @ OleV.V。 – z33
いいえ、新しいテーブルではありません。しかし、ResultSetからTableModelにデータを取り込むコードでは、ResultSetのデータにデータがどのように取り込まれているか気にしません。だからあなたの質問は、スイングの質問ではないSQLの質問です。 – camickr