xterm in jtextarea

RadeonX

Grünschnabel
Hallo Leute, habe schon viel hier gelesen aber mich nicht so getraut zu schreiben:)
Doch jetzt hab ich mal eine frage.
Also um es ganz simple auszudrücken, ich habe eine kleine applikation mit hilfe von jbuilder erstellt, nun wollte ich das z.B wenn ich ein button drück, in jtextarea das xtern unter linux auf geht und eine funktion ausführt. Ich habe es erstmal so versuch das es eine externes script aufgeruffen wird und das auch macht was ich will, nur sieht es nicht so schön aus wen da ein zusatz Fenster aufgeht.

Ist es möglich diese funktion also z.B runterladen einer cvs das über console Befehl geht direkt in java zu schreiben?

Soweit vielen dank für eure hilfe
gruss
 
Hallo,

ich bin zwar mit den LayoutManagern nicht so bewandert, aber das sollte
das sein was du suchst:

Code:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;

class OutputPoller extends Thread{
	private BufferedReader procOutput;
	private JTextArea output;

	public OutputPoller(BufferedReader procOutput, JTextArea output){
		this.procOutput = procOutput;
		this.output = output;
	}

	public void run(){
		String out = "";
		try{
			while((out = procOutput.readLine()) != null){
		        output.append(out + "\n");
				output.setCaretPosition(output.getText().length());
			}
		}
		catch(IOException ex){}
	}

}

class MyActionListener implements ActionListener{
	private JTextArea output = null;
	private JTextField input = null;

	public MyActionListener(JTextArea output, JTextField input){
		this.output = output;
		this.input = input;
	}

	public void actionPerformed(ActionEvent e){
		String command = input.getText();
		try{
			Process proc = Runtime.getRuntime().exec(command);
			new OutputPoller(new BufferedReader(new InputStreamReader(proc.getInputStream())), output).start();
			new OutputPoller(new BufferedReader(new InputStreamReader(proc.getErrorStream())), output).start();
		}
		catch(IOException ex){
			output.append(ex.getMessage() + "\n");
			ex.printStackTrace();
		}
		input.setText("");
	}
}

public class Console extends JFrame{
	private JTextArea output = new JTextArea(23,10);
	private JTextField input = new JTextField();
	private JButton button = new JButton("Send!");

	public Console(){
		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		setLayout(new BorderLayout());
		output.setEditable(false);
		JScrollPane scroll = new JScrollPane(output);
		add(scroll, BorderLayout.NORTH);
		add(input, BorderLayout.CENTER);
		add(new JLabel("Command: "), BorderLayout.WEST);
		add(button, BorderLayout.EAST);
		button.addActionListener(new MyActionListener(output, input));
		input.addActionListener(new MyActionListener(output, input));
		setSize(400,400);
		setVisible(true);
	}

	public static void main(String[] args){
		new Console();
	}
}

Gruß,

RedWing
 
erstmal 1000 dank für die antwort und die mühe.
Der Kern, was ich suchte ist damit gegebe, Rest kann ich selber noch rum Bastel......................

Aber eine kleine frage noch wenn ich etwas ausführe was ca 1 min dauert, wie würde die progresbar aussehen?


Nochmals vielen danl freu mich sehr über die super hilfe.
gruss
 
Zurück