public Class getColumnClass,s(int c)报错,请问怎么解决?

RuibeChen 2014-11-12 06:24:49
package Table;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;

public class TableModel2 implements ActionListener{

JTable t = null;

public TableModel2() {
// TODO Auto-generated constructor stub
JFrame f = new JFrame("DataModel");
JButton b1 = new JButton("数学老师");
b1.addActionListener(this);
JButton b2 = new JButton("学生阿呆");
b2.addActionListener(this);
JPanel panel = new JPanel();
panel.add(b1);
panel.add(b2);
t = new JTable(new MyTable(1));
t.setPreferredScrollableViewportSize(new Dimension(550, 30));
JScrollPane s = new JScrollPane(t);

f.getContentPane().add(panel,BorderLayout.NORTH);
f.getContentPane().add(s,BorderLayout.CENTER);
f.pack();
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}

public static void main(String[] args) {
// TODO Auto-generated method stub
new TableModel2();
}

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getActionCommand().equals("学生阿呆"))
t.setModel(new MyTable(1));
if(e.getActionCommand().equals("数学老师"))
t.setModel(new MyTable(2));
t.revalidate();
}

}
class MyTable extends AbstractTableModel{

Object[][] p1 = {
{
"阿呆","1234",new Integer(66),new Integer(50),new Integer(116),false,false
}
};
String[] n1 = {
"姓名","学号","语文","数学","总分","及格","作弊"
};
Object[][] p2 = {
{
"阿呆","1234",new Integer(50),false,false,"01234"
},
{
"阿瓜","1235",new Integer(75),true,false,"05678"
}
};
String[] n2 = {
"姓名","学号","数学","及格","作弊","电话"
};
int model = 1;

public MyTable(int i) {
// TODO Auto-generated constructor stub
int model = i;
}

@Override
public int getRowCount() {
// TODO Auto-generated method stub
if(model == 1)
return p1.length;
else
return p2.length;
}

@Override
public int getColumnCount() {
// TODO Auto-generated method stub
if(model == 1)
return n1.length;
else
return n2.length;
}

@Override
public Object getValueAt(int row, int col) {
// TODO Auto-generated method stub
if(model == 1)
return p1[row][col];
else
return p2[row][col];
}

public String getColumnName(int col){
if(model == 1)
return n1[col];
else
return n2[col];
}

public Class getColumnClass,s(int c){
return getValueAt(0,c).getClass();
}

}
...全文
230 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuefeng0707 2014-11-17
  • 打赏
  • 举报
回复
package Table;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;

public class TableModel2 implements ActionListener{
	
	JTable t = null;
	
	public TableModel2() {
		JFrame f = new JFrame("DataModel");
		JButton b1 = new JButton("数学老师");
		b1.addActionListener(this);
		JButton b2 = new JButton("学生阿呆");
		b2.addActionListener(this);
		JPanel panel = new JPanel();
		panel.add(b1);
		panel.add(b2);
		t = new JTable(new MyTable(1));
		t.setPreferredScrollableViewportSize(new Dimension(550, 30));
		JScrollPane s = new JScrollPane(t);
		
		f.getContentPane().add(panel,BorderLayout.NORTH);
		f.getContentPane().add(s,BorderLayout.CENTER);
		f.pack();
		f.setVisible(true);
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		});
	}
	
	public static void main(String[] args) {
		new TableModel2();
	}

	public void actionPerformed(ActionEvent e) {
		if(e.getActionCommand().equals("学生阿呆"))
			t.setModel(new MyTable(1));
		if(e.getActionCommand().equals("数学老师"))
			t.setModel(new MyTable(2));
		t.revalidate();
	}

}

class MyTable extends AbstractTableModel{
	
	Object[][] p1 = {
			{
				"阿呆","1234",new Integer(66),new Integer(50),new Integer(116),false,false
			}
	};
	String[] n1 = {
			"姓名","学号","语文","数学","总分","及格","作弊"
	};
	Object[][] p2 = {
			{
				"阿呆","1234",new Integer(50),false,false,"01234"
			},
			{
				"阿瓜","1235",new Integer(75),true,false,"05678"
			}
	};
	String[] n2 = {
			"姓名","学号","数学","及格","作弊","电话"
	};
	int model = 1;
	
	public MyTable(int i) {
//		int model = i;
		// 上面这句没有任何意义,改成下面这句
		this.model = i;
	}

	public int getRowCount() {
		if(model == 1)
			return p1.length;
		else
			return p2.length;
	}

	public int getColumnCount() {
		if(model == 1)
			return n1.length;
		else
			return n2.length;
	}

	public Object getValueAt(int row, int col) {
		if(model == 1)
			return p1[row][col];
		else
			return p2[row][col];
	}
	
	public String getColumnName(int col){
		if(model == 1)
			return n1[col];
		else
			return n2[col];
	}
	
	public Class<?> getColumnClass(int c){
		return getValueAt(0,c).getClass();
	}
	
}
改成这样,不会有任何问题。
RuibeChen 2014-11-15
  • 打赏
  • 举报
回复
引用 5 楼 ghx287524027 的回复:
你是想要这结果吗? 代码如下: import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; public class TableModel2 implements ActionListener{ JTable t = null; public TableModel2() { // TODO Auto-generated constructor stub JFrame f = new JFrame("DataModel"); JButton b1 = new JButton("数学老师"); b1.addActionListener(this); JButton b2 = new JButton("学生阿呆"); b2.addActionListener(this); JPanel panel = new JPanel(); panel.add(b1); panel.add(b2); t = new JTable(new MyTable(1)); t.setPreferredScrollableViewportSize(new Dimension(550, 30)); JScrollPane s = new JScrollPane(t); f.getContentPane().add(panel,BorderLayout.NORTH); f.getContentPane().add(s,BorderLayout.CENTER); f.pack(); f.setVisible(true); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e){ System.exit(0); } }); } public static void main(String[] args) { // TODO Auto-generated method stub new TableModel2(); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getActionCommand().equals("学生阿呆")) t.setModel(new MyTable(1)); if(e.getActionCommand().equals("数学老师")) t.setModel(new MyTable(2)); t.revalidate(); } } class MyTable extends AbstractTableModel{ Object[][] p1 = { { "阿呆","1234",new Integer(66),new Integer(50),new Integer(116),false,false } }; String[] n1 = { "姓名","学号","语文","数学","总分","及格","作弊" }; Object[][] p2 = { { "阿呆","1234",new Integer(50),false,false,"01234" }, { "阿瓜","1235",new Integer(75),true,false,"05678" } }; String[] n2 = { "姓名","学号","数学","及格","作弊","电话" }; int model = 1; public MyTable(int i) { // TODO Auto-generated constructor stub int model = i; } @Override public int getRowCount() { // TODO Auto-generated method stub if(model == 1) return p1.length; else return p2.length; } @Override public int getColumnCount() { // TODO Auto-generated method stub if(model == 1) return n1.length; else return n2.length; } @Override public Object getValueAt(int row, int col) { // TODO Auto-generated method stub if(model == 1) return p1[row][col]; else return p2[row][col]; } public String getColumnName(int col){ if(model == 1) return n1[col]; else return n2[col]; } public Class getColumnClass(int c){ return getValueAt(0,c).getClass(); } }
这段代码在你那可以运行? 在我这就报错……
ghx287524027 2014-11-15
  • 打赏
  • 举报
回复
你是想要这结果吗?


代码如下:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;

public class TableModel2 implements ActionListener{

JTable t = null;

public TableModel2() {
// TODO Auto-generated constructor stub
JFrame f = new JFrame("DataModel");
JButton b1 = new JButton("数学老师");
b1.addActionListener(this);
JButton b2 = new JButton("学生阿呆");
b2.addActionListener(this);
JPanel panel = new JPanel();
panel.add(b1);
panel.add(b2);
t = new JTable(new MyTable(1));
t.setPreferredScrollableViewportSize(new Dimension(550, 30));
JScrollPane s = new JScrollPane(t);

f.getContentPane().add(panel,BorderLayout.NORTH);
f.getContentPane().add(s,BorderLayout.CENTER);
f.pack();
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}

public static void main(String[] args) {
// TODO Auto-generated method stub
new TableModel2();
}

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getActionCommand().equals("学生阿呆"))
t.setModel(new MyTable(1));
if(e.getActionCommand().equals("数学老师"))
t.setModel(new MyTable(2));
t.revalidate();
}

}
class MyTable extends AbstractTableModel{

Object[][] p1 = {
{
"阿呆","1234",new Integer(66),new Integer(50),new Integer(116),false,false
}
};
String[] n1 = {
"姓名","学号","语文","数学","总分","及格","作弊"
};
Object[][] p2 = {
{
"阿呆","1234",new Integer(50),false,false,"01234"
},
{
"阿瓜","1235",new Integer(75),true,false,"05678"
}
};
String[] n2 = {
"姓名","学号","数学","及格","作弊","电话"
};
int model = 1;

public MyTable(int i) {
// TODO Auto-generated constructor stub
int model = i;
}

@Override
public int getRowCount() {
// TODO Auto-generated method stub
if(model == 1)
return p1.length;
else
return p2.length;
}

@Override
public int getColumnCount() {
// TODO Auto-generated method stub
if(model == 1)
return n1.length;
else
return n2.length;
}

@Override
public Object getValueAt(int row, int col) {
// TODO Auto-generated method stub
if(model == 1)
return p1[row][col];
else
return p2[row][col];
}

public String getColumnName(int col){
if(model == 1)
return n1[col];
else
return n2[col];
}

public Class getColumnClass(int c){
return getValueAt(0,c).getClass();
}

}
RuibeChen 2014-11-14
  • 打赏
  • 举报
回复
MyTable类的构造函数
引用 3 楼 RuibeChen 的回复:
[quote=引用 2 楼 RuibeChen 的回复:] [quote=引用 1 楼 xuefeng0707 的回复:] 不知道从哪来的代码,只要改成: public Class getColumnClass(int c){ 就可以了
感谢你的回复,这种低级的错误- - 在我的印象中,也没有双重的函数名的,可能我看得这本书有问题,就之前我有看到把权重的值设置为10的。 根据你的提示,我修改完代码后又报错了,这次问题出在 t = new JTable(new MyTable(1)); ErrorMessage: NoSuchMethodError: Table.MyTable.<init>(I)V 我先说自己的理解,然后麻烦您给我一些指导: 1,TableDemo2类中没有MyTable()方法,而且调用方法不用new 方法名(),所以排除方法调用错误问题 2,new MyTable(1)应该是创建一个类对象,参数为1,调用构造函数,这个对象拥有一些属性,返回一些属性作为JTable()的参数 3,MyTable继承了AbstractTableModel,但是没有继承TableDemo2,为什么在TableDemo2类中能够使用MyTable(1) MyTable类跟TableDemo2类是什么关系? 4,new MyTable(1)是创建了一个对象,那么通过调用这个对象点方法(特指在当前类中的方法或者继承类中具有public属性的方法)来得到一些返回值,这些返回值作为JTable()的属性列表中的值。 5,但是根据JTable的构造函数之一,JTable(TableModel dm) ,建立一个JTable,有默认的字段模式以及选择模式,并设置数据模式。t = new JTable(new MyTable(1));代码格式没有问题,是不是MyTable的构造函数有问题? 主要还是第3点的问题,MyTable类跟TableDemo2类是什么关系? 因为我是刚大三,非计算机专业,有一点C++基础,刚自学Java二十多天,麻烦详细解答一下,麻烦了。[/quote] 错误代码在31行。[/quote] MyTable类的构造函数绝对有问题,它里面的int model = i;根本没有用
RuibeChen 2014-11-14
  • 打赏
  • 举报
回复
引用 2 楼 RuibeChen 的回复:
[quote=引用 1 楼 xuefeng0707 的回复:] 不知道从哪来的代码,只要改成: public Class getColumnClass(int c){ 就可以了
感谢你的回复,这种低级的错误- - 在我的印象中,也没有双重的函数名的,可能我看得这本书有问题,就之前我有看到把权重的值设置为10的。 根据你的提示,我修改完代码后又报错了,这次问题出在 t = new JTable(new MyTable(1)); ErrorMessage: NoSuchMethodError: Table.MyTable.<init>(I)V 我先说自己的理解,然后麻烦您给我一些指导: 1,TableDemo2类中没有MyTable()方法,而且调用方法不用new 方法名(),所以排除方法调用错误问题 2,new MyTable(1)应该是创建一个类对象,参数为1,调用构造函数,这个对象拥有一些属性,返回一些属性作为JTable()的参数 3,MyTable继承了AbstractTableModel,但是没有继承TableDemo2,为什么在TableDemo2类中能够使用MyTable(1) MyTable类跟TableDemo2类是什么关系? 4,new MyTable(1)是创建了一个对象,那么通过调用这个对象点方法(特指在当前类中的方法或者继承类中具有public属性的方法)来得到一些返回值,这些返回值作为JTable()的属性列表中的值。 5,但是根据JTable的构造函数之一,JTable(TableModel dm) ,建立一个JTable,有默认的字段模式以及选择模式,并设置数据模式。t = new JTable(new MyTable(1));代码格式没有问题,是不是MyTable的构造函数有问题? 主要还是第3点的问题,MyTable类跟TableDemo2类是什么关系? 因为我是刚大三,非计算机专业,有一点C++基础,刚自学Java二十多天,麻烦详细解答一下,麻烦了。[/quote] 错误代码在31行。
RuibeChen 2014-11-14
  • 打赏
  • 举报
回复
引用 1 楼 xuefeng0707 的回复:
不知道从哪来的代码,只要改成: public Class getColumnClass(int c){ 就可以了
感谢你的回复,这种低级的错误- - 在我的印象中,也没有双重的函数名的,可能我看得这本书有问题,就之前我有看到把权重的值设置为10的。 根据你的提示,我修改完代码后又报错了,这次问题出在 t = new JTable(new MyTable(1)); ErrorMessage: NoSuchMethodError: Table.MyTable.<init>(I)V 我先说自己的理解,然后麻烦您给我一些指导: 1,TableDemo2类中没有MyTable()方法,而且调用方法不用new 方法名(),所以排除方法调用错误问题 2,new MyTable(1)应该是创建一个类对象,参数为1,调用构造函数,这个对象拥有一些属性,返回一些属性作为JTable()的参数 3,MyTable继承了AbstractTableModel,但是没有继承TableDemo2,为什么在TableDemo2类中能够使用MyTable(1) MyTable类跟TableDemo2类是什么关系? 4,new MyTable(1)是创建了一个对象,那么通过调用这个对象点方法(特指在当前类中的方法或者继承类中具有public属性的方法)来得到一些返回值,这些返回值作为JTable()的属性列表中的值。 5,但是根据JTable的构造函数之一,JTable(TableModel dm) ,建立一个JTable,有默认的字段模式以及选择模式,并设置数据模式。t = new JTable(new MyTable(1));代码格式没有问题,是不是MyTable的构造函数有问题? 主要还是第3点的问题,MyTable类跟TableDemo2类是什么关系? 因为我是刚大三,非计算机专业,有一点C++基础,刚自学Java二十多天,麻烦详细解答一下,麻烦了。
xuefeng0707 2014-11-13
  • 打赏
  • 举报
回复
不知道从哪来的代码,只要改成: public Class getColumnClass(int c){ 就可以了

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧