簡體   English   中英

擴展AbstractTableModel並動態填充jTable

[英]Extends AbstractTableModel and populate jTable dynamically

基本上,我正在研究客戶端服務器體系結構,以便某些客戶端可以在外部修改對象。

我有銀行:

public class Bank{
    private List<BankingOperation> operationList = new ArrayList<BankingOperation>();

    public void addOperation(BankingOperation op) {
        this.operationList.add(op);
//...
}

和我的服務器:

public class ServerBank extends JFrame {
    private Bank bank;
    private JTable table;
    private OperationTableModel model;

    public ServerBank() {
        this.bank = new Bank();
        this.model= new OperationTableModel(this.bank.getOperationList());
        table = new JTable(model);
        getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
        pack();
    }

    public static void main (String args[]) throws Exception {

        ServerBank frame=new ServerBank();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(800,700);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);


    }
    class OperationTableModel extends AbstractTableModel {

    private static final long serialVersionUID = 1L;
    private List<BankingOperation> operationList;
    public String[] colNames = { "Date", "Login", "Customer","Account", "Operation", "Amount", "Final Balance" };
    public Class<?>[] colTypes = { String.class, String.class, String.class, String.class, String.class, Integer.class,
            Integer.class };


    public OperationTableModel(List<BankingOperation> operationList) {
        super();
        this.operationList = operationList;
    }//...
}

客戶可以通過調用addOperation()在Bank operationList中添加一個Operation。

問題是:JTable如何檢測到並刷新顯示?

因為客戶端沒有使用TableModel方法添加操作。 他們無權訪問此課程。 最重要的是,我不知道在TableModel構造函數中給出Bank的整個operationList是否是個好主意...

通過授予客戶訪問銀行使用的內部清單的權限,您就可以允許他們在銀行的背后進行操作。 有點像是真正的銀行允許訪問其內部數據庫,而不是強迫所有客戶通過在線銀行應用程序。

您應該給客戶端一個接口的參考,該接口允許他們執行操作。 此接口的實現將控制允許他們執行的每項操作,並執行所有必要的操作。

例如,接口實現的addOperation()方法不僅會將操作添加到操作列表中,還會觸發一個表模型事件,以便表顯示此添加的操作。

如果銀行封裝了表模型,則可以直接執行此操作,也可以通過讓銀行觸發自定義的“添加操作”事件來間接執行。 表模型將偵聽這些事件,並觸發其自己的表模型事件以更新表。

暫無
暫無

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

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