说好了这周把那个统计代码的类写好,哎,没想到卡在了JTable的使用上了。挺郁闷的啊...看代码吧:
import java.awt.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;public class TestJTable extends JFrame{
private JTable table;
private DefaultTableModel tableModel;
private JPanel panel;
public TestJTable(){
super("JTable");
String[] tableHeader = {"File Name", "Code Lines", "Comment Lines", "Blank Lines"};
Vector<String> vectorHeader = new Vector<String> ();
for (int i=0; i<tableHeader.length; i++)
vectorHeader.add(tableHeader[i]);
Vector<String> value = new Vector<String> ();
value.add("c.java");
value.add("51");
value.add("10");
value.add("5");
tableModel = new DefaultTableModel(value, vectorHeader); table = new JTable(tableModel); //行高
table.setRowHeight(25);
table.setBounds(new Rectangle( 0, 235, 638, 249));
//设置表格列宽
table.getColumn("File Name").setMaxWidth(150);
table.getColumn("Code Lines").setMaxWidth(100);
table.getColumn("Comment Lines").setMaxWidth(100);
table.getColumn("Blank Lines").setMaxWidth(100); //设置表格内部字体
table.setFont(new java.awt.Font("Serif", Font.PLAIN, 14));
//设置表头字体
table.getTableHeader().setFont(new java.awt.Font("Serif", Font.PLAIN, 14));
//设置选择模式,使其能选择一行或多行
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//设置列不可拖动
table.getTableHeader().setReorderingAllowed(false); panel = new JPanel();
panel.add(table);
add(panel, BorderLayout.CENTER);
validate();
setVisible(true);
setSize(300, 200);
}
public static void main(String args[]){
TestJTable test = new TestJTable();
}
}
报的错是:
Exception in thread "main" java.lang.ClassCastException: java.lang.String
at javax.swing.table.DefaultTableModel.justifyRows(Unknown Source)
at javax.swing.table.DefaultTableModel.setDataVector(Unknown Source)
at javax.swing.table.DefaultTableModel.<init>(Unknown Source)
at TestJTable.<init>(TestJTable.java:28)
at TestJTable.main(TestJTable.java:64)
我觉得不应该啊 不就是用两个Vector来构造一个DefaultTableModel嘛 怎么会出错呢...
import java.awt.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;public class TestJTable extends JFrame{
private JTable table;
private DefaultTableModel tableModel;
private JPanel panel;
public TestJTable(){
super("JTable");
String[] tableHeader = {"File Name", "Code Lines", "Comment Lines", "Blank Lines"};
Vector<String> vectorHeader = new Vector<String> ();
for (int i=0; i<tableHeader.length; i++)
vectorHeader.add(tableHeader[i]);
Vector<String> value = new Vector<String> ();
value.add("c.java");
value.add("51");
value.add("10");
value.add("5");
tableModel = new DefaultTableModel(value, vectorHeader); table = new JTable(tableModel); //行高
table.setRowHeight(25);
table.setBounds(new Rectangle( 0, 235, 638, 249));
//设置表格列宽
table.getColumn("File Name").setMaxWidth(150);
table.getColumn("Code Lines").setMaxWidth(100);
table.getColumn("Comment Lines").setMaxWidth(100);
table.getColumn("Blank Lines").setMaxWidth(100); //设置表格内部字体
table.setFont(new java.awt.Font("Serif", Font.PLAIN, 14));
//设置表头字体
table.getTableHeader().setFont(new java.awt.Font("Serif", Font.PLAIN, 14));
//设置选择模式,使其能选择一行或多行
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//设置列不可拖动
table.getTableHeader().setReorderingAllowed(false); panel = new JPanel();
panel.add(table);
add(panel, BorderLayout.CENTER);
validate();
setVisible(true);
setSize(300, 200);
}
public static void main(String args[]){
TestJTable test = new TestJTable();
}
}
报的错是:
Exception in thread "main" java.lang.ClassCastException: java.lang.String
at javax.swing.table.DefaultTableModel.justifyRows(Unknown Source)
at javax.swing.table.DefaultTableModel.setDataVector(Unknown Source)
at javax.swing.table.DefaultTableModel.<init>(Unknown Source)
at TestJTable.<init>(TestJTable.java:28)
at TestJTable.main(TestJTable.java:64)
我觉得不应该啊 不就是用两个Vector来构造一个DefaultTableModel嘛 怎么会出错呢...
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;public class TestJTable extends JFrame{
private JTable table;
private DefaultTableModel tableModel;
private JPanel panel;
public TestJTable(){
super("JTable");
String[] tableHeader = {"File Name", "Code Lines", "Comment Lines", "Blank Lines"};
Vector<String> vectorHeader = new Vector<String> ();
for (int i=0; i<tableHeader.length; i++)
vectorHeader.add(tableHeader[i]);
Vector<String> value = new Vector<String> ();
value.add("c.java");
value.add("51");
value.add("10");
value.add("5");
Vector values = new Vector();
values.add(value);
tableModel = new DefaultTableModel(values, vectorHeader); table = new JTable(tableModel); //行高
table.setRowHeight(25);
table.setBounds(new Rectangle( 0, 235, 638, 249));
//设置表格列宽
table.getColumn("File Name").setMaxWidth(150);
table.getColumn("Code Lines").setMaxWidth(100);
table.getColumn("Comment Lines").setMaxWidth(100);
table.getColumn("Blank Lines").setMaxWidth(100); //设置表格内部字体
table.setFont(new java.awt.Font("Serif", Font.PLAIN, 14));
//设置表头字体
table.getTableHeader().setFont(new java.awt.Font("Serif", Font.PLAIN, 14));
//设置选择模式,使其能选择一行或多行
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//设置列不可拖动
// table.getTableHeader().setReorderingAllowed(false); panel = new JPanel();
panel.add(table);
add(panel, BorderLayout.CENTER);
validate();
setVisible(true);
setSize(300, 200);
}
public static void main(String args[]){
TestJTable test = new TestJTable();
}
}
setSize(300, 200); setVisible(true);一般放到最后,
你把上面两句交换一下试试
import java.awt.Font;
import java.awt.Rectangle;
import java.util.Vector;import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;public class TestJTable extends JFrame{
private JTable table;
private DefaultTableModel tableModel;
private JPanel panel;
public TestJTable(){
super("JTable");
String[] tableHeader = {"File Name", "Code Lines", "Comment Lines", "Blank Lines"};
Vector<String> vectorHeader = new Vector<String> ();
for (int i=0; i<tableHeader.length; i++)
vectorHeader.add(tableHeader[i]);
Vector<String> value = new Vector<String> ();
value.add("c.java");
value.add("51");
value.add("10");
value.add("5");
Vector values=new Vector();
values.add(value);
tableModel = new DefaultTableModel(values, vectorHeader); table = new JTable(tableModel);
System.out.println(table.getColumnCount()); //行高
table.setRowHeight(25);
table.setBounds(new Rectangle( 0, 235, 638, 249));
//设置表格列宽
table.getColumn("File Name").setMaxWidth(150);
table.getColumn("Code Lines").setMaxWidth(100);
table.getColumn("Comment Lines").setMaxWidth(100);
table.getColumn("Blank Lines").setMaxWidth(100); //设置表格内部字体
table.setFont(new java.awt.Font("Serif", Font.PLAIN, 14));
//设置表头字体
table.getTableHeader().setFont(new java.awt.Font("Serif", Font.PLAIN, 14));
//设置选择模式,使其能选择一行或多行
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//设置列不可拖动
table.getTableHeader().setReorderingAllowed(false); JScrollPane s = new JScrollPane(table);
panel = new JPanel();
panel.add(s);
add(panel);
// validate();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 200);
setVisible(true);
}
public static void main(String args[]){
TestJTable test = new TestJTable();
}
}
panel.add(table.getTableHeader());
List list = com.tj.snow.dao.DaoFactory.getInstance()
.getStudentDao().getStudents("");
Vector vectorTable = GuiUtils.list2Vector(list); Vector vectorHead = GuiUtils.getFields(list);
TableModel mainTableModel = new DefaultTableModel(
vectorTable, vectorHead);
mainTable = new JTable();
mainTable.setEnabled(false);
JScrollPane scrollpane = new JScrollPane(mainTable);
mainPanel.add(scrollpane);
mainTable.setModel(mainTableModel);