可以自己转换下或自定义一个tablemodel;示例:import java.util.ArrayList;
import java.util.List;import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;public class JTableDemo { public static void main(String[] args) {
final JTableDemo demo = new JTableDemo();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
frame.setSize(300, 200);
JTable table = new JTable(demo.new MyTableModel(demo.getDataList(), demo.getColName()));
frame.getContentPane().add(table);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
public List<Book> getDataList(){
List<Book> list = new ArrayList<Book>();
for(int i = 0; i < 5; i++){
Book book = new Book("Book"+i, "201404180"+i, 10.0*i);
list.add(book);
}
return list;
}
public List<String> getColName(){
List<String> list = new ArrayList<String>();
list.add("Book Name");
list.add("ISIN");
list.add("Price");
return list;
}
@SuppressWarnings("serial")
class MyTableModel extends DefaultTableModel{ List<Book> rowList;
List<String> colList;
MyTableModel(List<Book> rowList, List<String> colList){
this.rowList = rowList;
this.colList = colList;
setDataVector(getRowDataFromList(), getColDataFromList());
}
private Object[][] getRowDataFromList() {
Object[][] dataObj = null;
if(rowList != null && rowList.size() > 0){
dataObj = new Object[rowList.size()][colList.size()];
for (int row = 0; row < rowList.size(); row++) {
dataObj[row][0] = rowList.get(row).getBookName();
dataObj[row][1] = rowList.get(row).getISIN();
dataObj[row][2] = rowList.get(row).getPrice();
}
}
return dataObj;
}
private Object[] getColDataFromList() {
Object[] colObj = null;
if(colList !=null && colList.size() > 0){
colObj = new Object[colList.size()];
for (int col = 0; col < colList.size(); col++) {
colObj[col] = colList.get(col);
}
}
return colObj;
}
}
class Book{
String bookName;
String ISIN;
Double price;
Book(String bookName, String ISIN, Double price){
this.bookName = bookName;
this.ISIN = ISIN;
this.price = price;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getISIN() {
return ISIN;
}
public void setISIN(String iSIN) {
ISIN = iSIN;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
}
}
题目是这样的,我刚开始没看见要用表格显示只是把它显示出来,表格显示要用到Jtable的哪些方法啊,求点拨一下。谢谢。
第二“提交”:
你只需在数据提交后调用:
jtable.getModel()
获取TableModel,然后调用:
tablemodel.getRowDataFromList(dataList); 就是我上面给你的那个示例方法;或自己写个方法把数据给tablemode;最后调用:
tablemodel.fireTableDataChanged();
就可以把更新后的数据显示出来了;
看你也是很辛苦,简单示例下,其他自己思考实现了;import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;public class JTableDemo { static Random ram = new Random(37);
public static void main(String[] args) {
final JTableDemo demo = new JTableDemo();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
final JFrame frame = new JFrame();
frame.setSize(300, 200);
final JTable table = new JTable(demo.new MyTableModel(demo.getDataList(), demo.getColName()));
frame.getContentPane().add(table, BorderLayout.CENTER);
JPanel panel = new JPanel();
JButton subButton = new JButton("提交");
subButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
MyTableModel tm = (MyTableModel)table.getModel();
List<Book> list = tm.getRowList();
list.add(demo.new Book("Book-" + ram.nextInt(10000), "123-"+ram.nextInt(10000), 123.00));
tm.setRowList(list);
tm.fireTableDataChanged();
}
});
JButton disButton;
panel.add(disButton = new JButton("显示"));
disButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(frame, "自己实现!!");
}
});
panel.add(subButton);
frame.getContentPane().add(panel, BorderLayout.SOUTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
public List<Book> getDataList(){
List<Book> list = new ArrayList<Book>();
for(int i = 0; i < 5; i++){
Book book = new Book("Book"+i, "201404180"+i, 10.0*i);
list.add(book);
}
return list;
}
public List<String> getColName(){
List<String> list = new ArrayList<String>();
list.add("Book Name");
list.add("ISIN");
list.add("Price");
return list;
}
@SuppressWarnings("serial")
class MyTableModel extends DefaultTableModel{ List<Book> rowList;
List<String> colList;
public void setRowList(List<Book> rowList){
this.rowList = rowList;
setDataVector(getRowDataFromList(), getColDataFromList());
}
MyTableModel(List<Book> rowList, List<String> colList){
this.rowList = rowList;
this.colList = colList;
setDataVector(getRowDataFromList(), getColDataFromList());
}
public List<Book> getRowList(){
return rowList ;
}
private Object[][] getRowDataFromList() {
Object[][] dataObj = null;
if(rowList != null && rowList.size() > 0){
dataObj = new Object[rowList.size()][colList.size()];
for (int row = 0; row < rowList.size(); row++) {
dataObj[row][0] = rowList.get(row).getBookName();
dataObj[row][1] = rowList.get(row).getISIN();
dataObj[row][2] = rowList.get(row).getPrice();
}
}
return dataObj;
}
private Object[] getColDataFromList() {
Object[] colObj = null;
if(colList !=null && colList.size() > 0){
colObj = new Object[colList.size()];
for (int col = 0; col < colList.size(); col++) {
colObj[col] = colList.get(col);
}
}
return colObj;
}
}
class Book{
String bookName;
String ISIN;
Double price;
Book(String bookName, String ISIN, Double price){
this.bookName = bookName;
this.ISIN = ISIN;
this.price = price;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getISIN() {
return ISIN;
}
public void setISIN(String iSIN) {
ISIN = iSIN;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
}
}