我正在按设计模式进行作业。问题是,商店中有物品清单。因此,我们要求将列表分为两种方式,一种用于客户视图,另一种用于执行者视图。因此,我选择了桥接模式,因为它将抽象与实现分开。
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中如何打印?
答案 0 :(得分:0)
Swing JTable
使用Swing TableModel
管理其数据。您可以一次将数据转储到DefaultTableModel
中(从技术上讲,您可以使数据保持同步,但是保持单一的事实来源是一种更好的设计方法),也可以使用自定义TableModel
代理到特定于应用程序的集合。
您可以使用TableCellRenderer
更改表面视图。但是,渲染器越薄越好-尽可能最简单的平移层。如果我正确了解您的情况,最好为每个视图使用自定义TableModel
。
自定义TableModel
可以很好地使用另一个TableModel
(也许是DefaultTableModel
)实例来保存该实际数据。
(与往常一样,除非您必须这样做,否则不要继承它的类。忽略此规则在GUI代码中非常普遍。)