Java 如何使用带按钮的任务工厂方法

Java 如何使用带按钮的任务工厂方法,java,cytoscape,Java,Cytoscape,我正在Cytoscape上开发一个应用程序,这是一个数据可视化程序。当我使用任务工厂单击按钮时,我需要做某些事情。我实现了我的任务工厂和任务类。我在actionperformed部分注册了它,但它不起作用。当我在控制台上运行代码时,没有错误消息 如何将任务工厂注册到按钮 以下是我的代码中与此相关的部分: 在MyControl面板类中: this.provoImportButton.setText("Import"); this.provoImportButton.setVerticalA

我正在Cytoscape上开发一个应用程序,这是一个数据可视化程序。当我使用任务工厂单击按钮时,我需要做某些事情。我实现了我的任务工厂和任务类。我在actionperformed部分注册了它,但它不起作用。当我在控制台上运行代码时,没有错误消息

如何将任务工厂注册到按钮

以下是我的代码中与此相关的部分:

在MyControl面板类中:

this.provoImportButton.setText("Import");
    this.provoImportButton.setVerticalAlignment(1);
    this.provoImportButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            provoImportCore.importFile();
        }
    });
在provoImportCore类中:

public void importFile(){
    String path = getWholePath();
    ExtractEdgesNodesTaskFactory extractEdgesNodesTaskFactory = new ExtractEdgesNodesTaskFactory(adapter,path);
    adapter.getCyServiceRegistrar().registerService(extractEdgesNodesTaskFactory,TaskFactory.class,new Properties());
}
ExtractEdgesNodesTaskFactory类:

public class ExtractEdgesNodesTaskFactory extends AbstractTaskFactory {

private CySwingAppAdapter adapter;
private String path;

public ExtractEdgesNodesTaskFactory(CySwingAppAdapter adapter, String path) {
    this.path = path;
    this.adapter = adapter;
}

public TaskIterator createTaskIterator() {
    return new TaskIterator(new ExtractEdgesNodesTask(adapter,path));
}
}

ExtractEdgesNodesTask类:

public class ExtractEdgesNodesTask extends AbstractTask{
private CySwingAppAdapter adapter;
private String path;

public ExtractEdgesNodesTask(CySwingAppAdapter adapter, String path){
    super();
    this.path =path;
    this.adapter = adapter;
}

public void run(TaskMonitor taskMonitor) {
    taskMonitor.setStatusMessage("Extracting Edges and Nodes ...");
    try {
        Process process = Runtime.getRuntime().exec(path);
    } catch (Exception es) {
        JOptionPane.showMessageDialog(this.adapter.getCySwingApplication().getJFrame(),
                "The file that you choosed are not valid."  ,
                "Error!", JOptionPane.INFORMATION_MESSAGE);
        es.printStackTrace(System.err);
    }
}

public String getPath() {
    return path;
}

public void setPath(String path) {
    this.path = path;
}

}

这在cytoscape应用程序开发列表中得到了详细回答:

这在cytoscape应用程序开发列表中得到了详细回答: