首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java GUI中使用桥接模式?

在java GUI中使用桥接模式?
EN

Stack Overflow用户
提问于 2019-02-01 03:42:24
回答 1查看 98关注 0票数 0

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

代码语言:javascript
复制
public interface DrawingAPI {
    public void draw(List<Item> items);
}

实现接口

代码语言:javascript
复制
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.
    }

}

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

代码语言:javascript
复制
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();
}

抽象

代码语言:javascript
复制
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 Table中显示项目,我该如何实现呢?我可以在控制台中打印,但在GUI中又如何呢?

EN

回答 1

Stack Overflow用户

发布于 2019-02-01 05:14:06

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

您可以使用TableCellRenderer更改表面视图。但是,渲染器越薄越好,这是最简单的转换层。如果我正确地理解了您的情况,您最好为每个视图都有一个自定义的TableModel

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

(一如既往,除非迫不得已,否则不要子类化。令人沮丧的是,在GUI代码中忽略此规则非常普遍。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54468122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档