我在Java中第一次使用JTables和Vectors,我遇到了一个有趣的障碍。我的代码编译正确,但是当我去运行它时,我得到以下异常:
线程“main”中的异常java.lang.ClassCastException: java.lang.String无法强制转换为java.util.Vector
我没有看到我在哪里投,所以我有点困惑。
Vector<String> columnNames = new Vector<String>();
columnNames.add("Tasks");
Vector<String> testing = new Vector<String>();
testing.add("one");
testing.add("two");
testing.add("three");
table = new JTable(testing, columnNames); // Line where the error occurrs.
scrollingArea = new JScrollPane(table);
我的目标是拥有一个JPanels表,但是当我尝试使用&lt;的Vector时,我遇到了相同类型的错误。 taskPanel&gt;这是扩展JPanel的类:
class taskPanel extends JPanel
{
JLabel repeat, command, timeout, useGD;
public taskPanel()
{
repeat = new JLabel("Repeat:");
command = new JLabel("Command:");
timeout = new JLabel("Timeout:");
useGD = new JLabel("Update Google Docs:");
add(repeat);
add(command);
add(timeout);
add(useGD);
}
}
答案 0 :(得分:3)
您的testing
向量应为vector of vectors
,因为每行应包含所有列的数据,例如
Vector<Vector> testing = new Vector<Vector>();
Vector<String> rowOne = new Vector<String>();
rowOne.add("one");
Vector<String> rowTwo = new Vector<String>();
rowTwo.add("two");
Vector<String> rowThree = new Vector<String>();
rowThree.add("three");
testing.add(rowOne);
testing.add(rowTwo);
testing.add(rowThree);
table = new JTable(testing, columnNames); // should work now
scrollingArea = new JScrollPane(table);
答案 1 :(得分:2)
您需要在Vector
使用Vectors
:
Vector<Vector> rowData = new Vector<Vector>();
rowData.addElement(testing);
JTable table = new JTable(rowData, columnNames);
对于多列Vector
表模型,请参阅此example。
答案 2 :(得分:0)
铸件是&lt;字符串&gt;。你现在不能拥有Vector Strings。看看this。