Gotoxy do Pascal em Java!

Olá amigos,

Estou aprendendo java, e farei um projeto (que tem que ser em dos) no qual se faz necessário posicionar o cursor na tela. Seria algo do tipo o gotoxy(x, y) do Pascal.

Seria bom também que eu tivesse comandos para limpar a tela, mudar as cores das letras, mudar as cores de fundo… mas tudo em dos!

Como eu posso fazê-lo? Algúem de vcs tem alguma classe que implementa essas coisas para me arranjar?
Enfim, gostaria de pedir-lhes essa ajuda.

Um abraço a todos!
Fiquem na paz do Senhor Jesus!

pra alterar as posicoes do ponteiro do mouse vc pode usar a classe Robot (do pacote java.awt). ex:

public void moveMouse(int x, int y){
 Robot robot;
 try{
  robot = new Robot();
  robot.mouseMove(x, y);
 }
 catch (Exception erro){
  System.err.println(erro);
 }
}

O pacote java.awt jah vem no JDK da Sun?
O include dele é automático ou tem que ser feito manualmente?
E para limpar a tela, alguma dica?

[quote=“Felipe”]pra alterar as posicoes do ponteiro do mouse vc pode usar a classe Robot (do pacote java.awt). ex:

public void moveMouse(int x, int y){ Robot robot; try{ robot = new Robot(); robot.mouseMove(x, y); } catch (Exception erro){ System.err.println(erro); } } [/quote]

Filipe ,acho que o que nosso amigo quer é algo símile ao gotoxy,e não se trata do cursor do mouse não,mas sim do cursor de tela,aquele é que movimentado numa operação de tabulação ou de “retorno de carro”,enfim.

Mas sua dica foi muito boa mesmo,acredito que ele tambem vai precisar do famoso clrscr do Pascal,isso não existe pra Java em modo DOs não.O que se faz ,é fazer um System.out.println("");varrendo um vetor,que vai depender da resolução do video,que em geral é 25X80

E´isso!

1 curtida

Davisao,

atualmente estou procurando algo similar ao que você deseja. O que encontrei até agora foi um framework chamado charva. O charva faz uma “tradução” do layout de uma interface gráfica feita com a swing, e converte-a (com poucas modificações de código) para uma interface caractere, tipo a do DOS.

Dê uma olhada no screenshot no endereço a seguir:
http://www.pitman.co.za/projects/charva/Screenshots.html

minha procura continua, caso encontre algo postarei por aqui…

Boa Sorte!!!

Davisao,

uma boa notícia. Saí procurando pelos news, e encontrei o seguinte exemplo:

public class Ansi
{
static char Esc = (char) 27;

public static void ClrScr() {
System.out.print(Esc + “[2J”);
}

public static void GotoXY( int x, int y ) {
System.out.print(Esc + “[”);
System.out.print( y );
System.out.print( “;” );
System.out.print( x );
System.out.print( “H” );
}

public static void main (String arg[])
{
ClrScr();
GotoXY( 10, 5 );
System.out.println(“Test”);
}
}

Eu compilei e testei. Funciona muito bem. Executei no linux e no w2k. No linux, funcionou de primeira, pois o terminal tty que utilizer por defaul, tem suporte a interpretação de códigos ESC/ANSI, porém, no w2k, para que funcionasse corretamente, foi necessário instalar o recurso ansi.sys. Esta é uma forma que foi muito utilizada na era DOS e funcionava relativamente bem.

Procurando na net você encontrará muita informação sobre os códigos ESCAPE/ANSI.

No link http://is-it-true.org/nt/utips/utips181.shtml você encontrará as instruções para instalar a ansi.sys no seu SO, caso seja da família win.

Encontrei outras formas de fazer isto, como por exemplo, uma implementação da ncurses.h e da conio.h para java. Estes header files são muito utilizados pelos programadores C/C++. As implementações que encontrei até o momento utilizam a JNI (Java Native Interface).

Espero encontrar algo bem legal. :smiley:

Boa Sorte!!!

1 curtida

Muito boa a dica. Agora eu gostaria de algo como o GetX() e o GetY() para recuperar a posição da linha e coluna do cursor. Se alguém souber por favor posta aí.

No mais encontrei essas informações que podem ajudar com os outros comandos.
http://www.linuxselfhelp.com/howtos/Bash-Prompt/Bash-Prompt-HOWTO-6.html

6.2 Cursor Movement

ANSI escape sequences allow you to move the cursor around the screen at will. This is more useful for full screen user interfaces generated by shell scripts, but can also be used in prompts. The movement escape sequences are as follows:

- Position the Cursor:
  \033[<L>;<C>H
     Or
  \033[<L>;<C>f
  puts the cursor at line L and column C.
- Move the cursor up N lines:
  \033[<N>A
- Move the cursor down N lines:
  \033[<N>B
- Move the cursor forward N columns:
  \033[<N>C
- Move the cursor backward N columns:
  \033[<N>D

- Clear the screen, move to (0,0):
  \033[2J
- Erase to end of line:
  \033[K

- Save cursor position:
  \033[s
- Restore cursor position:
  \033[u

The latter two codes are NOT honoured by many terminal emulators. The only ones that I’m aware of that do are xterm and nxterm - even though the majority of terminal emulators are based on xterm code. As far as I can tell, rxvt, kvt, xiterm, and Eterm do not support them. They are supported on the console.

Try putting in the following line of code at the prompt (it’s a little clearer what it does if the prompt is several lines down the terminal when you put this in): echo -en “\033[7A\033[1;35m BASH \033[7B\033[6D” This should move the cursor seven lines up screen, print the word " BASH ", and then return to where it started to produce a normal prompt. This isn’t a prompt: it’s just a demonstration of moving the cursor on screen, using colour to emphasize what has been done.

Save this in a file called “clock”: