У меня есть 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()
}
}
}
Как я могу назвать методы мне нужно, во время выполнения?
Было бы намного проще, если бы вы создали «интерфейс XMLWriter» с методом 'writeToXML()', а затем пусть все ваши компоненты вкладки реализуют этот метод. Наконец, в вашем actionPerformed, итерации по всем компонентам вкладки, передайте их в 'XMLWriter' и вызовите' writeToXML() '. Но все это пахнет хорошим спагетти-кодом, где логика и пользовательский интерфейс смешиваются вместе, что в конечном итоге приводит к недостижимому коду. –