簡體   English   中英

從 JTable 讀取數據

[英]Read Data from JTable

我需要從 BookInfo 表中獲取 BookID。 當我按下 ADD 按鈕時,Reservation 窗口應該會彈出並在表中寫入 BookID、發布日期和返回日期。 所以我需要將 BookID 作為對象傳遞給 Reservation。

我嘗試創建一個新的圖書信息實例,或將字符串傳遞給預訂...

//for BookInfo:
public void addRow(Object[] objToAdd)
    {
        DefaultTableModel model = (DefaultTableModel) table.getModel();
        model.addRow(objToAdd);
    }
...

        JButton btnAdd = new JButton("Add");
        btnAdd.setBorder(new BevelBorder(BevelBorder.RAISED, null, null, new Color(0, 0, 0), new Color(0, 0, 0)));
        btnAdd.setOpaque(true);
        btnAdd.setFont(new Font("American Typewriter", Font.PLAIN, 18));
        btnAdd.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                Reservation.reserve(/*Object bookID*/);
            }
        });
String[] columnNames = {" Book ID", " Title ", " Author", " Genre", " Date Published ", " Availability"}; // table layout

//for Reservation:
public void reserve(Object[] bookID)
    {
        String issuedDate = new SimpleDateFormat("yyyy.MM.dd").format(new Date());

        Calendar c = Calendar.getInstance();
        c.setTime(new Date()); 
        c.add(Calendar.DATE, 30); 
        String returnDate = new SimpleDateFormat("yyyy.MM.dd").format(c);


        String[]resInfo = {"Book ID" , issuedDate, returnDate};
        DefaultTableModel model = (DefaultTableModel) table.getModel();
        model.addRow(resInfo);
    }

我不確定我了解您的用戶界面是什么樣,您想要什么行為或您當前已經實現了什么。 提出問題時,請嘗試使描述更加清晰,並提供所有相關代碼; 它不能從創建JButton的時間和位置以及在該范圍內擁有哪些信息(這些信息是回答問題所需的一些最關鍵的信息)的代碼派生而來。

假設您通過遍歷表模型並為每行創建一個按鈕來呈現表,那么您已經在actionListener的作用域中擁有BookID作為其中一列的值。 您只需要將其添加到您的偵聽器代碼中即可。

一種類似的替代方法涉及使用按鈕的actionCommand將String數據與按鈕相關聯。 然后,您可以從調用actionPerformed方法的ActionEvent中檢索此信息。 這是一個例子 但我認為這里沒有任何理由使用這種方法。 它只是增加了復雜性,上述解決方案更加簡單自然。

如果我對如何創建表的假設是錯誤的,可以附加一個mouseListener而不是一個actionListener,例如here ,這樣就可以從事件中獲取行並訪問相關列。

您可以使用下面的代碼讀取所有jtable數據

     DefaultTableModel model =  (DefaultTableModel) jTable1.getModel();
     Vector data = model.getDataVector();

     for (Object data1 : data) {
         System.out.println(data1);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM