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