Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

tcms

Duvida com frames/windows

Recommended Posts

tcms

Boas malta,

Estou a tentar criar uma janela em que quero que o background seja preto, mas para isso quer usar um ficheiro PNG (como tamanho fixo) que irá ser colocado em toda a àrea do bakground, de forma a que este fique todo preenchido.

Tentei com este código básico:

public void Ponto(){
int a = janela.getHeight();
int b = janela.getWidth();
try {
for(int i = 0; i!=a;i++){
for(int j = 0; j!=b;j++){
janela.getDisplayer().add(new SimpleImage("Black.png", i, j));
janela.getDisplayer().refresh();
}
}

}
catch (IOException e) {

}

E o resultado é bastante lento e não é eficaz. Alguem me poderá dar outra dica para o fazer?

Edited by brunoais
geshi

Share this post


Link to post
Share on other sites
tcms

Sim, essa seria a ajuda ideal no caso de estar a usar a package genérica. Mas não é esse o caso, a unica hipotese que tenho é usar o metodo "add" (imagem, x ,y).

O problema é que ao fazer isto, quando faço o run ele começa a preencher a janela, como se tivesse a percorrer toda a imagem.

Share this post


Link to post
Share on other sites
HappyHippyHippo

Sim, essa seria a ajuda ideal no caso de estar a usar a package genérica

e como achas que alguém vai descobrir o que estás a usar ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
tcms

e como achas que alguém vai descobrir o que estás a usar ?

Tens razão. Vamos começar do zero.

Basicamente tenho de fazer o background de uma janela a partir de um ficheiro texto. Para isso estou a usar o scanner.

A minha ideia é ler o ficheiro texto com o scanner e colocar o seu conteúdo numa matriz. Posto isto, percorro a matriz em conjunto com a JFrame e desenho o background.

É a unica ideia que tenho, contudo não sei se funciona pois imagine-se que a JFrame tem 400x400 e o ficheiro texto tem 5ints x 4ints por exemplo:

12345

12345

52345

12354

terei de estabelecer uma medida pixel por cada int lido?

Edited by tcms

Share this post


Link to post
Share on other sites
tcms

Estou a tentar colocar a primeira linha num vector e o código que fiz foi este:

public int[] carregar_ficheiro(String ficheiro) {
int[] aux = new int[4];
try {
Scanner fileScanner = new Scanner(new File(ficheiro));
while (fileScanner.hasNext()) {
String linha = fileScanner.nextLine();
Scanner linhaScanner = new Scanner(linha);
int temp = linhaScanner.nextInt();
for (int i = 0; i < aux.length; i++) {
    aux = temp;
    }
linhaScanner.close();
}
fileScanner.close();
} catch (final FileNotFoundException exception) {
System.out.println(ficheiro + ".txt não encontrado");
}
return aux;
}

Mas ao fazer sysout do vector na posição 2, ele devolve-me o valor 1. Sendo que na posição dois o valor é 3.

O problema é que ele coloca o primeiro inteiro que encontra em todos os indices do vector, ou seja, o problema é que ele só encontra o primeiro valor do .txt file e não parte para o seguinte.

Edited by brunoais
geshi

Share this post


Link to post
Share on other sites
HappyHippyHippo

diz o que o ciclo está a fazer, pode ser que percebas o problema ...

  • Vote 1

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
tcms

Sim eu percebo que ele está a colocar em todos os o i's o temp, a questão aqui é: o .nextInt() não avançar para os outros inteiros

Share this post


Link to post
Share on other sites
HappyHippyHippo

e não reparaste que essa instrução está fora do ciclo ?

  • Vote 1

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
tcms

e não reparaste que essa instrução está fora do ciclo ?

Nem mais. Que problema tão simples, distracção acima de tudo.

Mais uma vez obrigado HappyHH

Agora é tentar fazer o mesmo mas com uma matriz, o problema será ele ler as seguintes linhas

Edited by tcms

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.