[Java] 75 Swing 15の続きです。
Mainクラスから外部プログラムを実行してレース結果HTMLファイルを作成します。
今回はMain.javaの内容を載せます。自製のProcessExecutor.exec()メソッドでコンソールからPythonコードを実行します。
// PAGE_CENTER設定
editorPane = new JEditorPane();
contentPane.add(editorPane, BorderLayout.CENTER);
editorPane.setContentType("text/html");
editorPane.setEditable(false);
editorPane.setBackground(new Color(0xf0f8ff));
editorPane.addHyperlinkListener(new HyperlinkListener() {
@Override
public void hyperlinkUpdate(HyperlinkEvent e) {
if (HyperlinkEvent.EventType.ACTIVATED.equals(e.getEventType())) {
String race_html_pre = e.getURL().toString();
System.out.println("race_html " + race_html_pre);
String race_html = race_html_pre.substring(5);
StringBuilder HTMLcode = new StringBuilder();
HTMLcode.append("<table>" + "</table>");
// /raceディレクトリのインスタンスを作成する
File dir = new File("/race/");
// listFilesメソッドを使用して一覧を取得する
File[] list = dir.listFiles();
// 一覧のファイルを全て削除する
for(int i=0; i<list.length; i++) {
File file = new File(list[i].toString());
file.delete();
}
// 空HTMLファイルの作成
try{
File file = new File(race_html);
FileWriter filewriter = new FileWriter(file);
filewriter.write(HTMLcode.toString());
filewriter.close();}
catch(IOException e0){
System.out.println(e0);
}
// クリックしたレースのHTMLファイルを作成して上書きする(外部プログラム)
String type = "race";
try {
ProcessExecutor.exec(type);
} catch (Exception e1) {
e1.printStackTrace();
}
Desktop desktop = Desktop.getDesktop();
try {
desktop.browse(e.getURL().toURI());
} catch (IOException e2) {
e2.printStackTrace();
} catch (URISyntaxException e2) {
e2.printStackTrace();
}
}
}
});