有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在JavaGUI中使用桥接模式的swing?

我正在做设计模式的作业。问题是,商店里有一个商品清单。因此,我们要求将列表分为两种方式,一种是客户视图,另一种是高管视图。所以我选择桥接模式,因为它将抽象与实现分离

public interface DrawingAPI {
    public void draw(List<Item> items);
}

实现接口

public class CustomerView implements DrawingAPI{

    @Override
    public void draw(List<Item> items) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

}

具体的实现者,为客户显示项目列表

public abstract class UserData {
    DrawingAPI drawingAPI;

    public UserData(DrawingAPI dapi) {
        this.drawingAPI = dapi;
    }

    public void setDrawingAPI(DrawingAPI dapi) {
        this.drawingAPI = dapi;
    }

    public abstract void draw();
}

抽象

public class TanaUserData extends UserData{
    List<Item> stockCard;

    public TanaUserData(List<Item> stock ,DrawingAPI dapi) {
        super(dapi);
        this.stockCard = stock;
    }

    @Override
    public void draw() {
        this.drawingAPI.draw(stockCard);
    } 
}

一个类,它保存项目的记录,假设stockCard中有许多项目

问题是,我想让CustomerView和ExecutiveView类在Swing表中显示项目,我该如何实现这一点?我可以在控制台中打印,但在GUI中如何


共 (1) 个答案

  1. # 1 楼答案

    SwingJTable使用SwingTableModel来管理其数据。您可以将数据一次性转储到DefaultTableModel中(从技术上讲,您可以保持同步,但保持单一真相来源是一种更好的设计方法),也可以使用自定义的TableModel来代理特定于应用程序的集合

    可以使用TableCellRenderer更改表面视图。然而,渲染器在尽可能薄的情况下是最好的,这是最简单的转换层。如果我正确地理解了您的情况,您最好为每个视图定制一个TableModel

    自定义TableModel可能会使用另一个TableModel(可能是DefaultTableModel)实例来保存实际数据

    (通常,除非必须,否则不要创建子类。忽略此规则在GUI代码中非常常见。)