我有JTabbedPane
,就像这张照片中的那个:
My Tabbed Pane http://oi43.tinypic.com/2mm7ifk.jpg
每个标签都有一个类(HouseGUI,CSPGUI,VPPGUI等等)。
每个类都有一个名为writeToXML()
当我按下“全部保存”按钮时,我需要在writeToXML()
中调用每个“类”的JTabbedPane
方法。但我真的不知道怎么做。你能救我吗?
这是我到目前为止所做的:
if (e.getSource() == saveAllButton) {
int totalTabs = tabbedPane.getTabCount();
ArrayList<ArrayList<String>> salvationForAll = new ArrayList<>();
ArrayList<Method> methods = new ArrayList<>();
Method[] array = new Method[50];
for (int i = 0; i < totalTabs; i++) {
try {
String title = tabbedPane.getTitleAt(i);
String tmp = title;
tmp = tmp.replaceAll("\\s", "");
array = Class.forName("tabbedpaneInterfaces."+ tmp +"GUI").getMethods();
} catch (ClassNotFoundException ex) {
Logger.getLogger(AddComponents.class.getName()).log(Level.SEVERE, null, ex);
}
methods = convertToArrayList(array);
int methodSize = methods.size();
for (int j = 0; j < methodSize; j++) {
//TO DO call WriteToXML()
}
}
}
如何在运行时调用我需要的方法?
答案 0 :(得分:3)
让所有你的* UI类实现相同的接口:
public interface XMLWritable {
void writeToXml();
}
public class HouseGUI implements XMLWritable {
public void writeToXml() {
//XML writing stuff
}
}
----
for (int i = 0; i < totalTabs; i++) {
if(tabbedPane.getComponentAt(i) instanceof XMLWritable ) {
((XMLWritable) tabbedPane.getComponentAt(i)).writeToXml();
}
}
总而言之,混合UI和持久性内容并不是很容易维护,但这不是你问题的目的。