簡易ランチャーの作成AdvertisementOSプロセスの起動
J2SE5.0にはOSのプロセスを操作するためのクラスである、java.lang.ProcessBuilderが追加された。J2SE5.0より前のバージョンでは、java.lang.Runtimeクラスを利用してOSプロセスを起動していたが、ProcessBuilderの方が利用が容易である。ただし、実現できる機能は同じ。
以下ような記述を行うと、プロセスを実行することができる。
ProcessBuilder builder = new ProcessBuilder("java");
Process process = builder.start();
java.lang.ProcessクラスのgetInputStream()メソッドで標準出力を取得することができ、getErrorStream()メソッドで標準エラー出力を取得することができる。 ランチャーを作る
以下の点は無視
環境
Launcher.java
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.plaf.metal.MetalLookAndFeel;
public class Launcher extends JFrame{
private static final long serialVersionUID = 1L;
/** 初期設定を行う */
public Launcher(){
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.getContentPane().setLayout(new FlowLayout());
JButton addButton = new JButton("add");
addButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
addButton();
}});
this.getContentPane().add(addButton);
}
/** ボタンの追加 */
public void addButton(){
JFileChooser chooser = new JFileChooser();
if(chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION){
final String filePath = chooser.getSelectedFile().getPath();
JButton button = new JButton(chooser.getSelectedFile().getName());
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
run(filePath);
}});
this.getContentPane().add(button);
this.setVisible(true);
}
}
/** プロセスの起動 */
public void run(String path){
ProcessBuilder builder = new ProcessBuilder(path);
try {
Process process = builder.start();
} catch (IOException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(this.getContentPane(), "プロセスの起動に失敗しました。");
}
}
/** プログラムの起動 */
public static void main(String args[]){
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
MetalLookAndFeel.setCurrentTheme(new javax.swing.plaf.metal.OceanTheme());
Launcher mf = new Launcher();
mf.setTitle("launcher");
mf.setSize(400, 300);
mf.setVisible(true);
}
}
ポイントダイアログで選択されたプログラムの絶対パスを取得し、リスナーメソッドと関連付けている。実行画面![]() 図1:起動 ![]() 図2:追加ファイル選択 ![]() 図3:追加後 ![]() 図4:メモ帳起動 ![]() 図5:起動失敗 メモ:使いやすさを向上するなら…
Advertisement |
ショートカット・634トップページ・このカテゴリのトップページに戻る ・634ラボ UIコレクションギャラリー サイト検索Y!ログール |