Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从ArrayList填充jTable?_Java_Swing_Arraylist_Jtable - Fatal编程技术网

Java 如何从ArrayList填充jTable?

Java 如何从ArrayList填充jTable?,java,swing,arraylist,jtable,Java,Swing,Arraylist,Jtable,该程序旨在获取用户输入并将其存储在arraylist中。然后用户可以将详细信息打印到jtable上。之后,他可以通过选择一行从jtable中删除一项 我有两个问题 第一个问题是,我在遍历arraylist时出错 第二个问题是,当用户删除一行时,该项将从表中删除,但我也想从数组中删除该特定项。因此,如果用户再次单击“打印”按钮,则该项目不会再次出现 在arraylist中循环时出现问题: model = (DefaultTableModel) table.getModel(); for (

该程序旨在获取用户输入并将其存储在arraylist中。然后用户可以将详细信息打印到jtable上。之后,他可以通过选择一行从jtable中删除一项

我有两个问题

第一个问题是,我在遍历arraylist时出错

第二个问题是,当用户删除一行时,该项将从表中删除,但我也想从数组中删除该特定项。因此,如果用户再次单击“打印”按钮,则该项目不会再次出现

在arraylist中循环时出现问题:

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(…)
    setValueAt(…)
    以及事实上AbstractTableModel类的所有抽象方法
  • addBook(Book Book)
    方法需要调用AbstractTableModel的
    fireXXX(…)
    方法之一,以通知侦听器添加内容
  • 考虑给它一个
    removeBook(Book Book)
    方法,该方法在删除后同样触发一个通知方法
JTable教程可以帮助您进一步了解这一点,本网站上发布的许多示例也可以通过少量搜索找到


编辑
关于您的最新代码,当模型的数据发生变化时,您仍然没有调用任何fireXXX方法,这表明您没有像我建议的那样学习教程。请先这样做,因为它能比我们解释得更好

以下是链接:
下面是一些有用的答案:

  • (MadProgrammer有一些优秀的代码,您可以在这里学习)

您可以轻松搜索StackOverflow以获取更多示例。运气好。

如果您想将库类用作TableModel的核心,您可以,但您需要:

  • 让库类扩展AbstractTableModel
  • 库将需要更多的方法,例如
    getRowCount()
    getColumnCount()
    getColumnClass(…)
    getValueAt(…)
    setValueAt(…)
    以及事实上AbstractTableModel类的所有抽象方法
  • addBook(Book Book)
    方法需要调用AbstractTableModel的
    fireXXX(…)
    方法之一,以通知侦听器添加内容
  • 考虑给它一个
    removeBook(Book Book)
    方法,该方法在删除后同样触发一个通知方法
JTable教程可以帮助您进一步了解这一点,本网站上发布的许多示例也可以通过少量搜索找到


编辑
关于您的最新代码,当模型的数据发生变化时,您仍然没有调用任何fireXXX方法,这表明您没有像我建议的那样学习教程。请先这样做,因为它能比我们解释得更好

以下是链接:
下面是一些有用的答案:

  • (MadProgrammer有一些优秀的代码,您可以在这里学习)
您可以轻松搜索StackOverflow以获取更多示例。运气好。

试试这个代码

  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);
    }