我希望使用Factory Method模式,以使我的Swing UI开发更快、更易于管理。
一般来说,它是一个使用JInternalFrames的MDI应用程序。我在系统中有很多设置,如我所说的类型。userTypes、accountTypes等)我有一个固定的UI,我决定使用它。问题是,系统中有超过50个这样的类型,所以工厂方法模式似乎是最容易管理的解决方案。下面是一个工作应用程序的两个屏幕截图。


我正在看这个例子,但由于我无法估计在记录中存储所有信息所需的选项卡数量,我需要能够添加多个选项卡和控件(标签、文本框、表格、组合框等)。在这些选项卡中。
根据该示例,是否可以在抽象类中创建JTabbedPane,并在子类中对其进行修改和添加?
public AbstractTypeInternalFrame(String title) {
setBounds(100, 100, 808, 589);
JToolBar toolBar = new JToolBar();
getContentPane().add(toolBar, BorderLayout.NORTH);
JButton btnAdd = new JButton("Add");
toolBar.add(btnAdd);
JButton btnSave = new JButton("Save");
btnSave.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
}
});
toolBar.add(btnSave);
JButton btnDelete = new JButton("Delete");
toolBar.add(btnDelete);
JButton btnCancel = new JButton("Cancel");
btnCancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
toolBar.add(btnCancel);
JTabbedPane recordTabs = new JTabbedPane(makeRecordTabPane());
getContentPane().add(recordTabs, BorderLayout.NORTH);
JSeparator recordSearchSeparator = new JSeparator();
getContentPane().add(recordSearchSeparator, BorderLayout.NORTH);
}
protected abstract int makeRecordTabPane();正如您所看到的,我有点迷路了,只是需要一些方向来指导如何继续使用这样的模式。如果任何人有任何建议,甚至是例子/链接,将不胜感激。
我知道我的问题很模糊,所以如果我需要澄清,请随时提出。
诚挚的问候。
发布于 2012-05-31 17:40:39
下面是更详细的问题。
因此,我希望构建一个简单的JInternalFrame来对系统上的记录执行CRUD操作。例如用户、用户类型、帐户、帐户类型等记录。系统中有超过50个这样的类型,所以我认为使用工厂方法模式将使所有这些JInternalFrames更易于管理。
以下是用户记录的示例:
上半部分由记录的详细信息组成,这些详细信息根据记录的内容分为多个选项卡。某些记录可能只有一个选项卡,而其他较大的记录可能有多个选项卡。因此,应该在子类级别按this example.实例化JTabbedPane的内容
底部是我们搜索该类型的记录的地方。例如,在发布的链接中,打开了用户管理器JInternalFrame。然后,我们将根据用户名和/或userID搜索用户。结果显示在下表中,双击搜索结果时,记录将显示在JTabbedPane的上方。
然后使用Add、Save、Delete和Cancel按钮对输入到记录中的任何内容执行CRUD操作。
由此,我们可以说,需要通过子类实例化的设计方面是:
1) JInternaFrame的大小2) JTabbedPane的所有内容:标签、表格、标签、文本框等的编号3)搜索结果JTable中的列数:我们可以通过实例化JTable头部来更改列数。
一开始,我只是尝试创建一个带有JTabbedPane的抽象类,并向JTabbedPane添加组件,看看如何才能实现它。这是我之前发布的代码。此文件是使用WindowBuilder生成的,我随后对其进行了修改:
package zm.co.freight.fpsManagementGUI.view;
import java.awt.EventQueue;
public abstract class AbstractTypeInternalFrame extends JInternalFrame {
/**
* Launch the application.
*/
// public static void main(String[] args) {
// EventQueue.invokeLater(new Runnable() {
// public void run() {
// try {
// AbstractTypeInternalFrame frame = new AbstractTypeInternalFrame();
// frame.setVisible(true);
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
// });
// }
/**
* Create the frame.
*/
public AbstractTypeInternalFrame(String title) {
setBounds(100, 100, 808, 589);
JToolBar toolBar = new JToolBar();
getContentPane().add(toolBar, BorderLayout.NORTH);
JButton btnAdd = new JButton("Add");
toolBar.add(btnAdd);
JButton btnSave = new JButton("Save");
btnSave.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
}
});
toolBar.add(btnSave);
JButton btnDelete = new JButton("Delete");
toolBar.add(btnDelete);
JButton btnCancel = new JButton("Cancel");
btnCancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
toolBar.add(btnCancel);
JTabbedPane recordTabs = new JTabbedPane(makeRecordTabPane());
getContentPane().add(recordTabs, BorderLayout.NORTH);
JSeparator recordSearchSeparator = new JSeparator();
getContentPane().add(recordSearchSeparator, BorderLayout.NORTH);
}
protected abstract int makeRecordTabPane();
}问题是,我是在正确的轨道上吗?我应该如何使用工厂方法模式来处理它,因为我似乎没有很好地掌握它。我见过一些更简单的例子,比如形状和绘图,但是我对Swing接口有点迷惑。你有没有一个好的例子可以给我指引,或者一个简单的例子来给我指明正确的方向……这就是我所要求的全部。抱歉,如果我说得太含糊了..。
https://stackoverflow.com/questions/10818480
复制相似问题