我是 Java 新手,我有一些问题要问更高级的开发人员。
我有基于 Swing 的 GUI 应用程序,其中有几个AbstractActions
. 一大群AbstractActions
基于JPanel
. 例如:
// opens "Documents" tab
documentsAction = new AbstractAction(DOCUMENTS) {
@Override
public void actionPerformed(ActionEvent e) {
try {
int index = getTabIndex(DOCUMENTS);
if (index >= 0) {
// Tab exists, just open it.
tabbedPane.setSelectedIndex(index);
} else {
// No tab. Create it and open
newCatalogTab(new DocumentService(), DOCUMENTS);
}
} catch (ServiceException ex) {
printError(ex.getMessage());
}
}
};
documentsItem.setAction(documentsAction);
在哪里getTabIndex
:
private int getTabIndex(String tabName) {
int result = -1;
for (int i = 0; i < tabbedPane.getTabCount(); i++) {
if (tabName.equals(tabbedPane.getTitleAt(i))) {
result = i;
break;
}
}
return result;
}
并且newCatalogTab
是:
private void newCatalogTab(ICatalog service, String Name) throws ServiceException {
CatalogPanel panel = new CatalogPanel(service);
tabbedPane.add(Name, panel);
tabbedPane.setSelectedIndex(tabbedPane.getTabCount() - 1);
checkTabs(); // changes activity of buttons like "edit" and "delete"
}
所以,许多AbstractAction
人做类似的工作:
- 创建扩展类的实例
AbstractPanel
; - 将数据访问接口(
DocumentService
在示例中)传递给实例; - 使用实例创建一个新选项卡。
如果数据访问接口将使用不同的 POJO,我可以以某种方式对其进行模板化吗?我可以创建通用接口并使用它吗?你能告诉我正确的思考方向吗?
谢谢你浪费你的时间。