Java 如何在JTable中显示对象数组?
这是我正在使用的代码,但当我试图打印Java 如何在JTable中显示对象数组?,java,swing,jtable,tablemodel,Java,Swing,Jtable,Tablemodel,这是我正在使用的代码,但当我试图打印dataArray对象时,数据不会显示在JTable中。可以使用要打印对象数组值的表的哪些模型属性以及如何使用 public class ShowAddressForm extends javax.swing.JFrame { Object data[][]; Object dataArray[][]; int count = 0; String st; public ShowAddressForm(String f
dataArray
对象时,数据不会显示在JTable
中。可以使用要打印对象数组值的表的哪些模型属性以及如何使用
public class ShowAddressForm extends javax.swing.JFrame {
Object data[][];
Object dataArray[][];
int count = 0;
String st;
public ShowAddressForm(String fname , String str) {
super(fname);
st = str;
initComponents();
fillTable();
}
public void fillTable()
{
int count = 0;
String str;
try
{
BufferedReader br = new BufferedReader(new FileReader("D:\\JavaPrograms\\Contact Management System\\InputFiles\\AddressFile"));
while((str = br.readLine()) != null)
{
count++;
}
br.close();
} catch (Exception e)
{
}
Object id;
Object name;
data = new Object[count][7];
int i = 0 , j = 0 , m;
try
{
BufferedReader buffrea = new BufferedReader(new FileReader("D:\\JavaPrograms\\Contact Management System\\InputFiles\\AddressFile"));
while((str = buffrea.readLine()) != null)
{
StringTokenizer token = new StringTokenizer(str , "*");
int n = token.countTokens();
id = token.nextElement();
name = token.nextElement();
String strNameLow = name.toString().toLowerCase();
String strNameUpp = name.toString().toUpperCase();
if(strNameLow.startsWith(st.toLowerCase()) || strNameUpp.startsWith(st.toUpperCase()))
{
data[i][0] = id;
data[i][1] = name;
for(j = 2 ; j < n ; j++)
{
data[i][j] = token.nextElement();
}
i = i + 1;
}
}
buffrea.close();
} catch(IOException ioe){
System.out.println("Error : " + ioe.toString());
}
dataArray = new Object[i][7];
for(int a = 0 ; a < i ; a++)
{
for(int b = 0 ; b < 7 ; b++)
{
dataArray[a][b] = data[a][b];
}
}
//Here is the code to print dataArray object which i used but it is not working, when i am run my program it is print "[Ljava.lang.Object;@1cc2e30" in table's first cell[0][0] position
DefaultTableModel model = (DefaultTableModel)this.data_table.getModel();
model.addRow(dataArray);
}
public类ShowAddressForm扩展了javax.swing.JFrame{
对象数据[];
对象数据数组[];
整数计数=0;
字符串st;
公共ShowAddressForm(字符串fname,字符串str){
超级(fname);
st=str;
初始化组件();
fillTable();
}
公共void fillTable()
{
整数计数=0;
字符串str;
尝试
{
BufferedReader br=新的BufferedReader(新的文件阅读器(“D:\\JavaPrograms\\Contact Management System\\InputFiles\\AddressFile”);
而((str=br.readLine())!=null)
{
计数++;
}
br.close();
}捕获(例外e)
{
}
对象id;
对象名称;
数据=新对象[计数][7];
int i=0,j=0,m;
尝试
{
BufferedReader buffrea=新的BufferedReader(新的文件读取器(“D:\\JavaPrograms\\Contact Management System\\InputFiles\\AddressFile”);
while((str=buffrea.readLine())!=null)
{
StringTokenizer令牌=新的StringTokenizer(str,“*”);
int n=token.countTokens();
id=token.nextElement();
name=token.nextElement();
字符串strNameLow=name.toString().toLowerCase();
字符串strNameUpp=name.toString().toUpperCase();
if(strNameLow.startsWith(st.toLowerCase())| | strNameUpp.startsWith(st.toUpperCase())
{
数据[i][0]=id;
资料[i][1]=姓名;
对于(j=2;j
我在这样一个JTable中填充了数据。您可能想尝试将其调整到您的代码中。变量和内容是西班牙语的,只需替换为您需要的内容即可。在我的示例中,它是一个表,有4列,表示日期、分数、持续时间和最大查看器
private void fillJTable(){
//creating data to add into the JTable. Here you might want to import your proper data from elsewhere
Date date = new Date();
UserReplay rep1 = new UserReplay(date, 12, 13,14);
UserReplay rep2 = new UserReplay(date, 2,34,5);
ArrayList<UserReplay> usuaris = new ArrayList<>();
usuaris.add(rep1);
usuaris.add(rep2);
//----Filling Jtable------
DefaultTableModel model = (DefaultTableModel) view.getTable().getModel();
model.addColumn("Fecha");
model.addColumn("Puntuación");
model.addColumn("Tiempo de duración");
model.addColumn("Pico máximo de espectadores");
for (int i = 0; i < usuaris.size(); i++){
Vector<Date> fecha = new Vector<>(Arrays.asList(usuaris.get(i).getDate()));
Vector<Integer> puntuacion = new Vector<>(Arrays.asList(usuaris.get(i).getPuntuacion()));
Vector<Integer> tiempo = new Vector<>(Arrays.asList(usuaris.get(i).getTiempo()));
Vector<Integer> espectadors = new Vector<>(Arrays.asList(usuaris.get(i).getTiempo()));
Vector<Object> row = new Vector<Object>();
row.addElement(fecha.get(0));
row.addElement(puntuacion.get(0));
row.addElement(tiempo.get(0));
row.addElement(espectadors.get(0));
model.addRow(row);
}
}
private void fillJTable(){
//正在创建要添加到JTable中的数据。在这里,您可能希望从其他地方导入正确的数据
日期=新日期();
UserReplay rep1=新的UserReplay(日期12,13,14);
UserReplay rep2=新的UserReplay(日期,2,34,5);
ArrayList usuaris=新的ArrayList();
高利贷增加(rep1);
高利贷。添加(rep2);
//----填充Jtable------
DefaultTableModel=(DefaultTableModel)view.getTable().getModel();
模型。添加柱(“Fecha”);
model.addColumn(“Puntuación”);
model.addColumn(“Tiempo de duración”);
模型添加柱(“Pico máximo de Spectadores”);
对于(int i=0;i
1)为了更快地获得更好的帮助,请发布一个or。使用一些硬编码数据替换文本文件。2)“在Netbeans中的java中”解决方案可以在java代码中找到,而不是在IDE中,因此“Netbeans”是不相关的。3)catch(异常e){
不要忽略异常!异常会准确地告诉我们出了什么问题。除非实现日志记录,否则至少调用Throwable.printStackTrace()
。您永远不会将JTable/JScrollPane添加到框架中