在许多不同的类之间同步java swing中的事件/数据

在许多不同的类之间同步java swing中的事件/数据,java,swing,Java,Swing,我的问题是关于在编写gui时同步数据和事件的概念性问题。(这个例子展示了批处理状态是获取实现相同接口的类和在两个不同框架中动态更新单元的促进者。这段代码就是我的想法。) 我假设我将专门在触发事件的类(面板)和对该事件的反应(另一个面板)中创建该批处理状态对象的新实例。为此,我将添加需要与BSListener列表通信的类。然后调用批处理状态函数,如“setSelectedCell()”,迭代每个类以同步它们 问题 如果对象都共享同一个arrayList,但由于它们都是新实例,所以不共享,那么这将非

我的问题是关于在编写gui时同步数据和事件的概念性问题。(这个例子展示了批处理状态是获取实现相同接口的类和在两个不同框架中动态更新单元的促进者。这段代码就是我的想法。)

我假设我将专门在触发事件的类(面板)和对该事件的反应(另一个面板)中创建该批处理状态对象的新实例。为此,我将添加需要与BSListener列表通信的类。然后调用批处理状态函数,如“setSelectedCell()”,迭代每个类以同步它们

问题 如果对象都共享同一个arrayList,但由于它们都是新实例,所以不共享,那么这将非常有效。我试着把东西改成静态的,特别是在界面上。这种方法合乎逻辑吗?我是编程gui的新手?对不起,这是一本小说

interface BatchStateListener {

    public void valueChanged(Cell cell, String newValue);

    public void selectedCellChanged(Cell newSelectedCell)
}

class BatchState {

    private String[][] values;
    private Cell selectedCell;
    private List<BatchStateListener> listeners;

    public BatchState(int records, int fields) {
        values = new String[records][fields];
        selectedCell = null;
        listeners = new ArrayList<BatchStateListener>();
    }

    public void addListener(BatchStateListener l) {
        listeners.add(l);
    }

    public void setValue(Cell cell, String value) {

        values[cell.record][cell.field] = value;

        for (BatchStateListener l : listeners) {
            l.valueChanged(cell, value);
        }
    }

    public String getValue(Cell cell) {
        return values[cell.record][cell.field];
    }

    public void setSelectedCell(Cell selCell) {

        selectedCell = selCell;

        for (BatchStateListener l : listeners) {
            l.selectedCellChanged(selCell);
        }
    }

    public Cell getSelectedCell() {
        return selectedCell;
    }
}
接口BatchStateListener{
public void valueChanged(单元格,字符串newValue);
public void selectedCellChanged(单元格newSelectedCell)
}
类批处理状态{
私有字符串[][]值;
专用小区选择小区;
私人名单听众;
公共批处理状态(int记录、int字段){
值=新字符串[记录][字段];
selectedCell=null;
侦听器=新的ArrayList();
}
公共void addListener(BatchStateListener l){
添加(l);
}
公共void setValue(单元格、字符串值){
值[单元格记录][单元格字段]=值;
for(BatchStateListener l:侦听器){
l、 值已更改(单元格、值);
}
}
公共字符串getValue(单元格){
返回值[cell.record][cell.field];
}
公共无效设置选定单元格(单元格选择单元格){
selectedCell=selCell;
for(BatchStateListener l:侦听器){
l、 selectedCellChanged(selCell);
}
}
公共单元格getSelectedCell(){
返回所选单元格;
}
}

我的问题有点让人困惑,但我找到了答案。我只是想知道如何在代码中实现这个BatchState类。我发现如果我在main中创建它并将它传递给需要相互通信的构造器框架/面板,它们都可以共享对它的引用