Java 如何从ArrayList填充jTable?
该程序旨在获取用户输入并将其存储在arraylist中。然后用户可以将详细信息打印到jtable上。之后,他可以通过选择一行从jtable中删除一项 我有两个问题 第一个问题是,我在遍历arraylist时出错 第二个问题是,当用户删除一行时,该项将从表中删除,但我也想从数组中删除该特定项。因此,如果用户再次单击“打印”按钮,则该项目不会再次出现 在arraylist中循环时出现问题:Java 如何从ArrayList填充jTable?,java,swing,arraylist,jtable,Java,Swing,Arraylist,Jtable,该程序旨在获取用户输入并将其存储在arraylist中。然后用户可以将详细信息打印到jtable上。之后,他可以通过选择一行从jtable中删除一项 我有两个问题 第一个问题是,我在遍历arraylist时出错 第二个问题是,当用户删除一行时,该项将从表中删除,但我也想从数组中删除该特定项。因此,如果用户再次单击“打印”按钮,则该项目不会再次出现 在arraylist中循环时出现问题: model = (DefaultTableModel) table.getModel(); for (
model = (DefaultTableModel) table.getModel();
for (int i=0; i<lib.data.size(); i++){
book = lib.data.get(i);
}
model.addRow(book);
编辑
这是我在library类中添加的内容:
public void addBook(Book book){
int firstRow = data.size() - 1;
int lastRow = firstRow;
fireTableRowsInserted(firstRow, lastRow);
data.add(book);
}
public void fireTableDataChanged() {
}
这是我添加到我的主类中的内容(按钮):
如果希望将库类用作TableModel的核心,可以,但需要:
- 让库类扩展AbstractTableModel
- 库将需要更多的方法,例如
,getRowCount()
,getColumnCount()
,getColumnClass(…)
,getValueAt(…)
以及事实上AbstractTableModel类的所有抽象方法setValueAt(…)
方法需要调用AbstractTableModel的addBook(Book Book)
方法之一,以通知侦听器添加内容fireXXX(…)
- 考虑给它一个
方法,该方法在删除后同样触发一个通知方法removeBook(Book Book)
编辑
关于您的最新代码,当模型的数据发生变化时,您仍然没有调用任何fireXXX方法,这表明您没有像我建议的那样学习教程。请先这样做,因为它能比我们解释得更好 以下是链接:
下面是一些有用的答案:
- (MadProgrammer有一些优秀的代码,您可以在这里学习)
您可以轻松搜索StackOverflow以获取更多示例。运气好。如果您想将库类用作TableModel的核心,您可以,但您需要:
- 让库类扩展AbstractTableModel
- 库将需要更多的方法,例如
,getRowCount()
,getColumnCount()
,getColumnClass(…)
,getValueAt(…)
以及事实上AbstractTableModel类的所有抽象方法setValueAt(…)
方法需要调用AbstractTableModel的addBook(Book Book)
方法之一,以通知侦听器添加内容fireXXX(…)
- 考虑给它一个
方法,该方法在删除后同样触发一个通知方法removeBook(Book Book)
编辑
关于您的最新代码,当模型的数据发生变化时,您仍然没有调用任何fireXXX方法,这表明您没有像我建议的那样学习教程。请先这样做,因为它能比我们解释得更好 以下是链接:
下面是一些有用的答案:
- (MadProgrammer有一些优秀的代码,您可以在这里学习)
JTable booktable = new JTable();
String[] colName = { "Call No", "Name", "Category", "Author ",
"Publisher", "From", "Price", "Remarks" ,"Edit/Delete"};
booktable.getTableHeader().setBackground(Color.WHITE);
booktable.getTableHeader().setForeground(Color.BLUE);
Font Tablefont = new Font("Book Details", Font.BOLD, 12);
booktable.getTableHeader().setFont(Tablefont);
List<Book> books = new ArrayList<Book>();
books = ServiceFactory.getBookService().findAllBook();
Object[][] object = new Object[100][100];
int i = 0;
if (books.size() != 0) {
for (Book book : books) {
object[i][0] = book.getCallNo();
object[i][1] = book.getName();
object[i][2] = book.getCategory_id().getName();
object[i][3] = book.getAuthor();
object[i][4] = book.getPublisher();
object[i][5] = book.getFrom();
object[i][6] = book.getPrice();
object[i][7] = book.getRemark();
object[i][8] = getEditDeleteButton();
i++;
booktable = new JTable(object, colName);
}
}
JTable booktable=new JTable();
String[]colName={“电话号码”、“姓名”、“类别”、“作者”,
“出版商”、“发件人”、“价格”、“备注”、“编辑/删除”};
booktable.getTableHeader().setBackground(颜色:白色);
booktable.getTableHeader().setForeground(Color.BLUE);
Font Tablefont=新字体(“书籍详细信息”,Font.BOLD,12);
booktable.getTableHeader().setFont(Tablefont);
List books=new ArrayList();
books=ServiceFactory.getBookService().findAllBook();
对象[][]对象=新对象[100][100];
int i=0;
如果(books.size()!=0){
用于(书籍:书籍){
对象[i][0]=book.getCallNo();
object[i][1]=book.getName();
对象[i][2]=book.getCategory_id().getName();
object[i][3]=book.getAuthor();
对象[i][4]=book.getPublisher();
object[i][5]=book.getFrom();
object[i][6]=book.getPrice();
object[i][7]=book.getRemark();
对象[i][8]=getEditDeleteButton();
i++;
booktable=新的JTable(对象,colName);
}
}
试试这段代码
JTable booktable = new JTable();
String[] colName = { "Call No", "Name", "Category", "Author ",
"Publisher", "From", "Price", "Remarks" ,"Edit/Delete"};
booktable.getTableHeader().setBackground(Color.WHITE);
booktable.getTableHeader().setForeground(Color.BLUE);
Font Tablefont = new Font("Book Details", Font.BOLD, 12);
booktable.getTableHeader().setFont(Tablefont);
List<Book> books = new ArrayList<Book>();
books = ServiceFactory.getBookService().findAllBook();
Object[][] object = new Object[100][100];
int i = 0;
if (books.size() != 0) {
for (Book book : books) {
object[i][0] = book.getCallNo();
object[i][1] = book.getName();
object[i][2] = book.getCategory_id().getName();
object[i][3] = book.getAuthor();
object[i][4] = book.getPublisher();
object[i][5] = book.getFrom();
object[i][6] = book.getPrice();
object[i][7] = book.getRemark();
object[i][8] = getEditDeleteButton();
i++;
booktable = new JTable(object, colName);
}
}
JTable booktable=new JTable();
String[]colName={“电话号码”、“姓名”、“类别”、“作者”,
“出版商”、“发件人”、“价格”、“备注”、“编辑/删除”};
booktable.getTableHeader().setBackground(颜色:白色);
booktable.getTableHeader().setForeground(Color.BLUE);
Font Tablefont=新字体(“书籍详细信息”,Font.BOLD,12);
booktable.getTableHeader().setFont(Tablefont);
List books=new ArrayList();
books=ServiceFactory.getBookService().findAllBook();
对象[][]对象=新对象[100][100];
int i=0;
如果(books.size()!=0){
用于(书籍:书籍){
对象[i][0]=book.getCallNo();
object[i][1]=book.getName();
对象[i][2]=book.getCategory_id().getName();
object[i][3]=book.getAuthor();
public void addBook(Book book){
int firstRow = data.size() - 1;
int lastRow = firstRow;
fireTableRowsInserted(firstRow, lastRow);
data.add(book);
}
public void fireTableDataChanged() {
}
book = new Book();
book.setTitle(title);
book.setAuthor(author);
lib.addBook(book);
lib.fireTableDataChanged();
JTable booktable = new JTable();
String[] colName = { "Call No", "Name", "Category", "Author ",
"Publisher", "From", "Price", "Remarks" ,"Edit/Delete"};
booktable.getTableHeader().setBackground(Color.WHITE);
booktable.getTableHeader().setForeground(Color.BLUE);
Font Tablefont = new Font("Book Details", Font.BOLD, 12);
booktable.getTableHeader().setFont(Tablefont);
List<Book> books = new ArrayList<Book>();
books = ServiceFactory.getBookService().findAllBook();
Object[][] object = new Object[100][100];
int i = 0;
if (books.size() != 0) {
for (Book book : books) {
object[i][0] = book.getCallNo();
object[i][1] = book.getName();
object[i][2] = book.getCategory_id().getName();
object[i][3] = book.getAuthor();
object[i][4] = book.getPublisher();
object[i][5] = book.getFrom();
object[i][6] = book.getPrice();
object[i][7] = book.getRemark();
object[i][8] = getEditDeleteButton();
i++;
booktable = new JTable(object, colName);
}
}
public void showDataInTable(ArrayList<Book> listOfBooks, JTable table){
DefaultTableModel model = new DefaultTableModel(new Object[]{"Title", "Author"}, 0);
for(Book book:listOfBooks){
model.addRow(new Object[]{book.getTitle(), book.getAuthor()});
}
table.setModel(model);
}
public void deleteRecord(JTable table, ArrayList<Book> listOfBooks){
Iterator<Book> it = listOfBooks.iterator();
while(it.hasNext()){
Book book = it.next();
if(book.getTitle.equals(String.valueOf(table.getValueAt(table.getSelectedRow(), 0))) && book.getAuthor.equals(String.valueOf(table.getValueAt(table.getSelectedRow(), 1)))){
it.remove();
break;
}
}
showDataInTable(listOfBooks, table);
}