我正在做我的设计模式作业。问题是,商店里有一张商品清单。因此,我们要求以两种方式绘制列表,一种是客户视图,另一种是执行视图。因此,我选择了桥模式,因为它将抽象与实现分开。
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 Table中显示项目,我该如何实现呢?我可以在控制台中打印,但在GUI中又如何呢?
发布于 2019-02-01 05:14:06
Swing JTable使用Swing TableModel来管理其数据。您可以一次性地将数据转储到DefaultTableModel中(从技术上讲,您可以保持同步,但保持单一的事实来源是一种更好的设计方法),也可以使用代理到特定于应用程序的集合上的自定义TableModel。
您可以使用TableCellRenderer更改表面视图。但是,渲染器越薄越好,这是最简单的转换层。如果我正确地理解了您的情况,您最好为每个视图都有一个自定义的TableModel。
自定义TableModel可以使用另一个TableModel (可能是DefaultTableModel)实例来保存实际数据。
(一如既往,除非迫不得已,否则不要子类化。令人沮丧的是,在GUI代码中忽略此规则非常普遍。)
https://stackoverflow.com/questions/54468122
复制相似问题