Gå til innhold

Anbefalte innlegg

Hei. Har sitti å søkt litt på nettet, men greier altså ikke så finne ut hvordan man kan lage et shell gui til Java. Det jeg rett og slett vil lage er en terminal i Java som kjører linux-kommandoer.

 

Noen som har en ide om hvordan dette kan gjøres, eller en god link?

Lenke til kommentar
Videoannonse
Annonse

Det går ann å kjøre kommandoer i bash via litt java-kode, men det er selve GUI'et jeg trenger hjelp til. Hvordan er det man lager slik at man kan skrive å trykke return, så utfører den kommandoen og hopper ned til neste linje?

 

Uansett, hvis det er av interesse så kan man løse problemet med kjøring av kommandoer slik:

Klikk for å se/fjerne innholdet nedenfor
import java.io.*;

public class Terminal
{	
public static void main( String[] args )
{
 String temp;
 String output = "";

 try {
 	/* Kjører kommandoen "date" i linux sin terminal */
 	Process p = Runtime.getRuntime().exec( "date" );
 	
 	/* Leser hvis kommandoen er riktig */
 	BufferedReader reader = new BufferedReader
 	( new InputStreamReader( p.getInputStream() ) );        
 	
 	/* Samler opp output */
 	while( ( temp = reader.readLine() ) != null ) {
   output += temp + "\n";
 	} // Slutt while
 	
 	System.out.println( output );
 	
 } catch( Exception e ) {
 	System.out.println(e);
 }
}
}

Er sikkert ikke av topp kvalitet, men det viser ihvertfall prinsippet.

 

Håper noen kan hjelpe meg med problemet ovenfor :)

Lenke til kommentar

Jeg skjønner ikke helt hva du mener her. Mener du at du ikke vet hvordan du lager en swing GUI med et par tekstfelter? Eller snakker du egentlig om et konsoll program, slik som du demonstrerte over?

 

Jeg har redigert koden din litt, så den kan kjøre de kommandoene du selv skriver i konsollen. Å endre dette til å bli grafisk burde være veldig enkelt om det er det du er ute etter.

 

Klikk for å se/fjerne innholdet nedenfor
import java.io.*;

public class Terminal
{
public static void main( String[] args )
{
 try
 {
 	BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) ); 
 	boolean run = true;
 	
 	while ( run )
 	{
   System.out.print( "Enter command: " );
   String command = br.readLine();
   
   if ( !command.equals( "exit" ) )
   {
   	Process p = Runtime.getRuntime().exec( command );
   	BufferedReader reader = new BufferedReader( new InputStreamReader( p.getInputStream() ) );
   	
   	while ( reader.ready() )
   	{
     System.out.println( reader.readLine() );
   	}
   	
   	reader.close();
   }
   
   else
   	run = false;
 	}
 	
 	br.close();
 	System.out.println( "Done..." );
 }
 
 catch( IOException e )
 {
 	System.out.println(e);
 }
}
}

Lenke til kommentar

Jeg vet greit nok hvordan man lager et enkelt swing, men vet ikke hvordan jeg lager selve kommando-"editoren". Altså den man skriver inn i. Hvordan skal man få til slik at man kan skrive, trykke enter, så utføres kommandoen du har skrevet. Det kommer da ut outputen og du kan fortsette å skrive inn kommandoer. Så her er det altså snakk om å lage selve GUI'et til en terminal.

 

Takk for svar!

Lenke til kommentar

Hvis du skal ha begge deler i 1 JTextArea, så tror jeg du må knote litt.

 

Hva med å ha en JTextField som du har en ActionListener på. Så skriver du en kommando i den, trykker enter, og da utføres kommandoen og resultatet blir skrevet ut i en JTextArea?

 

Edit: Fant et par linker som du kan titte på.

http://forum.java.sun.com/thread.jspa?foru...threadID=779503

http://forum.java.sun.com/thread.jspa?foru...threadID=714491

Endret av Blurpy
Lenke til kommentar
Jeg vet greit nok hvordan man lager et enkelt swing, men vet ikke hvordan jeg lager selve kommando-"editoren". Altså den man skriver inn i. Hvordan skal man få til slik at man kan skrive, trykke enter, så utføres kommandoen du har skrevet. Det kommer da ut outputen og du kan fortsette å skrive inn kommandoer. Så her er det altså snakk om å lage selve GUI'et til en terminal.

 

Takk for svar!

9307074[/snapback]

 

For å få den til å reagere på tastetrykk som enter må du lage en klasse implementerer ActionListener. Der er det kun en metode: void actionPerformed(ActionEvent e)

 

I denne må du ha en sjekk på om tasten som er trykket på er enter. Nå husker jeg ikke hva enter heter, men en enkel sjekk er:

 

if(e == <enter>) {

<Gjør noe>

}

Lenke til kommentar

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

Laster...
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...