需要数组,但找到对象-java
我是java新手。我遵循一个教程,将图像和其他数据从db检索到jTable。数据将首先检索到ArrayList,我得到这样一个错误,表示需要数组,但找到了对象。我已经添加了我所有的代码。错误在需要数组,但找到对象-java,java,swing,jtable,Java,Swing,Jtable,我是java新手。我遵循一个教程,将图像和其他数据从db检索到jTable。数据将首先检索到ArrayList,我得到这样一个错误,表示需要数组,但找到了对象。我已经添加了我所有的代码。错误在model.java文件中。任何帮助都将不胜感激 Course.java package my.welcomescreen; public class Course { private int id; private String name; private byte[] ima
model.java
文件中。任何帮助都将不胜感激
Course.java
package my.welcomescreen;
public class Course {
private int id;
private String name;
private byte[] imag;
private String desc;
public Course(){}
public Course(int Id, String Name, byte[] image, String description){
this.id = Id;
this.name = Name;
this.imag = image;
this.desc = description;
}
public int getID(){
return id;
}
public void setID(int ID){
this.id = ID;
}
public String getName(){
return name;
}
public void setName(String Name){
this.name = Name;
}
public byte[] getImage(){
return imag;
}
public String getDesc(){
return desc;
}
public void setDesc(String Description){
this.desc = Description;
}
}
package my.welcomescreen;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
public class MainQuery {
public ArrayList<Course> BindTable(){
ArrayList<Course> list = new ArrayList<Course>();
db databaseCon = new db();
Connection dbconnect = db.dbconnect();
Connection con = databaseCon.dbconnect();
Statement st;
ResultSet rs;
try{
st = con.createStatement();
String sql = "select id,name,img,description from courses";
rs = st.executeQuery(sql);
Course c;
while(rs.next()){
c = new Course(
rs.getInt("id"),
rs.getString("name"),
rs.getBytes("img"),
rs.getString("description")
);
}
} catch (SQLException ex) {
Logger.getLogger(Admin_Panel.class.getName()).log(Level.SEVERE, null, ex);
}
return list;
}
}
package my.welcomescreen;
import javax.swing.Icon;
import javax.swing.table.AbstractTableModel;
public class TheModel extends AbstractTableModel {
private String[] columns;
private Object[] rows;
public TheModel(){}
public TheModel(Object[][] data, String[] columnName){
this.rows = data;
this.columns = columnName;
}
public Class getColumnClass(int Column){
if(Column == 2){
return Icon.class;
} else {
return getValueAt(0,Column).getClass();
}
}
public int getRowCount() {
return this.rows.length;
}
public int getColumnCount() {
return this.columns.length;
}
public Object getValueAt(int rowIndex, int columnIndex) {
return this.rows[rowIndex][columnIndex]; //this is the error line : array required but object found
}
public String getColumnName(int col){
return this.columns[col];
}
}
MainQuery.java
package my.welcomescreen;
public class Course {
private int id;
private String name;
private byte[] imag;
private String desc;
public Course(){}
public Course(int Id, String Name, byte[] image, String description){
this.id = Id;
this.name = Name;
this.imag = image;
this.desc = description;
}
public int getID(){
return id;
}
public void setID(int ID){
this.id = ID;
}
public String getName(){
return name;
}
public void setName(String Name){
this.name = Name;
}
public byte[] getImage(){
return imag;
}
public String getDesc(){
return desc;
}
public void setDesc(String Description){
this.desc = Description;
}
}
package my.welcomescreen;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
public class MainQuery {
public ArrayList<Course> BindTable(){
ArrayList<Course> list = new ArrayList<Course>();
db databaseCon = new db();
Connection dbconnect = db.dbconnect();
Connection con = databaseCon.dbconnect();
Statement st;
ResultSet rs;
try{
st = con.createStatement();
String sql = "select id,name,img,description from courses";
rs = st.executeQuery(sql);
Course c;
while(rs.next()){
c = new Course(
rs.getInt("id"),
rs.getString("name"),
rs.getBytes("img"),
rs.getString("description")
);
}
} catch (SQLException ex) {
Logger.getLogger(Admin_Panel.class.getName()).log(Level.SEVERE, null, ex);
}
return list;
}
}
package my.welcomescreen;
import javax.swing.Icon;
import javax.swing.table.AbstractTableModel;
public class TheModel extends AbstractTableModel {
private String[] columns;
private Object[] rows;
public TheModel(){}
public TheModel(Object[][] data, String[] columnName){
this.rows = data;
this.columns = columnName;
}
public Class getColumnClass(int Column){
if(Column == 2){
return Icon.class;
} else {
return getValueAt(0,Column).getClass();
}
}
public int getRowCount() {
return this.rows.length;
}
public int getColumnCount() {
return this.columns.length;
}
public Object getValueAt(int rowIndex, int columnIndex) {
return this.rows[rowIndex][columnIndex]; //this is the error line : array required but object found
}
public String getColumnName(int col){
return this.columns[col];
}
}
主要方法
public void displayJTable(){
MainQuery mq = new MainQuery();
ArrayList<Course> list = mq.BindTable();
String[] columnName = {"Id","Course Name","Image","Description"};
Object[][] rows = new Object[list.size()][3];
for(int i = 0; i < list.size(); i++){
rows[i][0] = list.get(i).getID();
rows[i][1] = list.get(i).getName();
if(list.get(i).getImage() != null){
ImageIcon image = new ImageIcon(new ImageIcon(list.get(i).getImage()).getImage()
.getScaledInstance(150, 120, Image.SCALE_SMOOTH) );
rows[i][2] = image;
}
rows[i][3] = list.get(i).getDesc();
}
TheModel model = new TheModel(rows, columnName);
jTable1.setModel(model);
jTable1.setRowHeight(120);
jTable1.getColumnModel().getColumn(3).setPreferredWidth(150);
}
public void displayJTable(){
MainQuery mq=新的MainQuery();
ArrayList list=mq.BindTable();
String[]columnName={“Id”、“课程名称”、“图像”、“描述”};
Object[][]行=新对象[list.size()][3];
对于(int i=0;i
在模型中
public class TheModel extends AbstractTableModel {
private String[] columns;
private Object[][] rows; //since data is 2 dimensional array
..//rest of code
}
在模型中,它应该是
public class TheModel extends AbstractTableModel {
private String[] columns;
private Object[][] rows; //since data is 2 dimensional array
..//rest of code
}
行
在您的示例中是一个对象
数组,但您需要一个对象
数组
Object[]
->Object[][
行
在您的示例中是一个对象
数组,但您需要一个对象
的数组
对象[]
->对象[]
您的表格模型错误。不要:
使用数组来容纳课程
对象,因为您不知道让数组容纳所有对象的大小
使用二维数组作为参数来构造类
相反:
使用ArrayList保存课程
对象。ArrayList大小将自动增加,因为需要更多的空间来容纳所有对象
创建模型时,将ArrayList作为参数传入
有关如何为自定义对象创建自定义TableModel的分步示例,请参阅。您的TableModel错误。不要:
使用数组来容纳课程
对象,因为您不知道让数组容纳所有对象的大小
使用二维数组作为参数来构造类
相反:
使用ArrayList保存课程
对象。ArrayList大小将自动增加,因为需要更多的空间来容纳所有对象
创建模型时,将ArrayList作为参数传入
有关如何为自定义对象创建自定义TableModel的分步示例,请参阅。多亏了您,错误现在已得到修复!。但是它应该在表中显示sql结果。但什么都没有发生。数据库中有4列,表中也有4列。请帮帮我,多亏了你,错误现在已经解决了!。但是它应该在表中显示sql结果。但什么都没有发生。数据库中有4列,表中也有4列。请帮助我要求使用多个用户标识:退出使用多个用户标识: