1

私はJTabbedPaneこの写真のようなものを持っています:

私のタブ付きペイン

各タブ (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()                       
            }                   
        }               
    }

実行時に必要なメソッドを呼び出すにはどうすればよいですか?

4

1 に答える 1

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 と永続性を混在させることはあまり保守的ではありませんが、それはあなたの質問の目的ではありません。

于 2013-06-12T13:47:52.310 に答える