我在这里看了几个视频和问题,但我找不到我想要的东西。我是一个编程菜鸟(使用Derby数据库在Netbeans上用Java编程)所以请温柔。我有一个数据库,里面有2个表。 StudentScores和StudentDetails。
StudentDetails有NAMEID和STUDENTNAME列。
StudentScores具有NAMEID,SCOREID,DATETAKEN和SCORE列。
我想在我的程序中有一个JTable,它显示第一个数据库中的NAME列和第二个表中的DATETAKEN和SCORE。 我该怎么做?我只找到了有关如何使用一个数据库表中的所有详细信息填充JTable的教程。
我还希望用户能够在组合框中选择其名称时查看学生的所有记录(在JTable中)。我知道我必须在组合框和QUERY中获取名称的ID吗?
我找到了这个 http://1bestcsharp.blogspot.co.uk/2015/06/java-mysql-populate-jtable-Depending-JCombobox-Selected-Value.html但我感到困惑,因为正在创建多个类。 我是否必须创建多个类,或者我是否可以在同一个JFrame表单中完成所有操作?
答案 0 :(得分:0)
试试这个:
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;
}
}
答案 1 :(得分:0)
请在下面的链接中查看我的回答。你的问题几乎一样。希望这会有所帮助。
How to bring all data of table in JTable and insert it into Database
答案 2 :(得分:0)
这样做......应该可以正常工作
Select
sd.NameID,
sd.StudentsName,
sm.DATETAKEN,
sm.Score
from
(firsttablename) sd,
(secondtablename) sm
where
sd.NameId = sm.NameId
and sd.NameID = (nameid you want to display data)
但是在这里你必须将nameid作为第二个表中的外键。