我正在创建几个类来简化创建 GUI、应用可访问性设置、绘制图形等过程,而且我已经走了很长一段路;但我有一个想法,如果可行的话会很棒,我想知道这是否可能。
现在,我有一个“JFrameBuilder”类,其方法如下:
/**
* The "addButton" method adds a button to a JFrame
* @param app The parent window (a JFrame)
* @param text The button text
* @param x The x-coordinate where the button should appear
* @param y The y-coordinate where the button should appear
* @param width The width of the button
* @param height The height of the button
* @return A JButton object (it returns an object so programs can manipulate it later)
*/
public JButton addButton(JFrame app, String text, int x, int y, int width, int height) {
try {
JButton button = new JButton();
button.setText(text);
button.setBounds(x, y, width, height);
app.add(button);
System.out.println("\"" + text + "\" button created.");
return button;
}catch(Exception e) {
System.out.println("Something went wrong when creating the \"" + text + "\" button.");
System.out.println(e.getStackTrace());
return null;
}
}
所以基本上它真正做的就是在一种方法中设置多个属性(消除每个对象编写 10-15 行代码的需要)。这些工作很好,但我想进一步抽象,这些方法可以与 JApplets、JPanels 和其他容器以及 JFrame 一起使用。这样我就可以将 JFrameBuilder 类概括为更直接的“AppBuilder”、“GUIBuilder”等,并能够在其他项目中使用它。
但要做到这一点,我需要在方法中传递一个未知类型的对象作为参数。所以我尝试用“Object”替换“JFrame”,然后使用字符串来识别它的类型,并尝试在此基础上进行更改。但是,我在使用“add”之类的方法时遇到了一些麻烦;我认为这是因为 Object 没有 add 方法(即使 JPanel 是对象类型而 JPanel 有)。
为了澄清一点,基本上我需要它做的是找出应该添加按钮/标签/任何内容的容器(“父级?”)。到目前为止,我知道的唯一方法是将其作为参数传递给方法;如果有另一种方法,我想学习它,但如果没有,那么理想情况下传递一个未知类型的变量似乎是最好的方法。这样,方法内部就会有一些东西来识别类型并以此为基础(例如,如果可以显示其他对象,添加到它,如果不能,则捕获异常)。
所以我在这个网站上查看了类似的问题(这实际上是我从中获得 Object 想法的地方)并且也用 Google 搜索了一下,但没有运气。因此,与往常一样,我绝对会感谢任何建议或其他想法。
谢谢。:)