私はJavaをいじっていて、アドレスにpingを実行して「ms」を出力するプログラムを作成しようとしていました。
私はJButtonを持っています:
JButton start = new JButton("START");
start.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
try {
doCommand();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
doCommand() メソッドは次のようになります。
public static void doCommand() throws IOException{
String s = null;
ProcessBuilder pb = new ProcessBuilder(commands); //definiramo procesBuilder
Process proces = pb.start(); //zaženemo proces (vrne Process)
BufferedReader stdInput = new BufferedReader(new InputStreamReader(proces.getInputStream())); //Branje outputa procesa
BufferedReader stdError = new BufferedReader(new InputStreamReader(proces.getErrorStream())); //Branje error outputa
while((s = stdInput.readLine()) != null){ //dokler output obstaja (ni error)
int dvop = s.indexOf(":") + 16;
if(s.startsWith("Reply")){
s=s.substring(dvop);
int pres = s.indexOf(" ");
s=s.substring(0,pres-2);
//System.out.println(s);
label.setText(s);
}
}
while((s = stdError.readLine()) != null){ //dokler error obstaja
System.out.println(s);
}
}
何が起こるかというと、ボタンを押すたびにプログラムがフリーズして何も起こらず、「通常の」方法で閉じることさえできません...私は何か間違ったことをしていると思います...