Ajuda com o comando return .java

Java

08/11/2019

Olá, estou fazendo uma pagina web que controla uma lâmpada, porem não estou conseguindo fazer o comando return me retornar uma imagem com resposta.

Segue os comandos .java


package componentes.casa;

public class Lampada
{
public int estado = 1;

public void lampada_ligada()
{
estado = 1;
}
public void lampada_desligada()
{
estado = 0;
}
public String estado_lampada()
{
if(estado == 1)
{
return "Acessa"; <---------- Estou querendo por a imagem aqui, será que é possivel?
}
else
{
return "Apagada";
}

}
}
João Silva

João Silva

Curtidas 0

Respostas

Sadasd

Sadasd

08/11/2019

O java tem uma classe específica para imagens, se chama BufferedImage, faça seu método retornar uma BufferedImage ao invés de uma String.
GOSTEI 0
João Silva

João Silva

08/11/2019

O java tem uma classe específica para imagens, se chama BufferedImage, faça seu método retornar uma BufferedImage ao invés de uma String.
Será que poderia me dar um exemplo simples para que eu possa entender melhor pois esse comando bufferedImage é novo para mim.
GOSTEI 0
Sadasd

Sadasd

08/11/2019

O java tem uma classe específica para imagens, se chama BufferedImage, faça seu método retornar uma BufferedImage ao invés de uma String.
Será que poderia me dar um exemplo simples para que eu possa entender melhor pois esse comando bufferedImage é novo para mim.


Não é muito complicado, olha esse exemplo:

BufferedImage imagem = null;
try {
    File arquivo = new File("imagem.png"); // NOTA: coloque aqui o path para sua imagem, e não apenas o nome como eu fiz
    imagem = ImageIO.read(arquivo); 
} catch (IOException e) { 
    e.printStackTrace(); 
}


Ta aí, agora é só trabalhar em cima da sua imagem utilizando os métodos que a classe BufferedImage te oferece.

GOSTEI 0
João Silva

João Silva

08/11/2019

O java tem uma classe específica para imagens, se chama BufferedImage, faça seu método retornar uma BufferedImage ao invés de uma String.
Será que poderia me dar um exemplo simples para que eu possa entender melhor pois esse comando bufferedImage é novo para mim.


Não é muito complicado, olha esse exemplo:

BufferedImage imagem = null;
try {
    File arquivo = new File("imagem.png"); // NOTA: coloque aqui o path para sua imagem, e não apenas o nome como eu fiz
    imagem = ImageIO.read(arquivo); 
} catch (IOException e) { 
    e.printStackTrace(); 
}


Ta aí, agora é só trabalhar em cima da sua imagem utilizando os métodos que a classe BufferedImage te oferece.

Mas então eu tenho que criar uma classe para o BufferedImage ? e depois importa-lá para minha classe lampada? é isso não sei se entendi direito.
GOSTEI 0
Sadasd

Sadasd

08/11/2019

O java tem uma classe específica para imagens, se chama BufferedImage, faça seu método retornar uma BufferedImage ao invés de uma String.
Será que poderia me dar um exemplo simples para que eu possa entender melhor pois esse comando bufferedImage é novo para mim.


Não é muito complicado, olha esse exemplo:

BufferedImage imagem = null;
try {
    File arquivo = new File("imagem.png"); // NOTA: coloque aqui o path para sua imagem, e não apenas o nome como eu fiz
    imagem = ImageIO.read(arquivo); 
} catch (IOException e) { 
    e.printStackTrace(); 
}


Ta aí, agora é só trabalhar em cima da sua imagem utilizando os métodos que a classe BufferedImage te oferece.

Mas então eu tenho que criar uma classe para o BufferedImage ? e depois importa-lá para minha classe lampada? é isso não sei se entendi direito.


Não necessáriamente, você pode criar o objeto BufferedImage dentro da sua classe lâmpada se quiser mas criar a classe contendo suas imagens e importá-la também funciona, apenas selecione a melhor forma de estruturar seu projeto no seu caso.
GOSTEI 0
João Silva

João Silva

08/11/2019

O java tem uma classe específica para imagens, se chama BufferedImage, faça seu método retornar uma BufferedImage ao invés de uma String.
Será que poderia me dar um exemplo simples para que eu possa entender melhor pois esse comando bufferedImage é novo para mim.


Não é muito complicado, olha esse exemplo:

BufferedImage imagem = null;
try {
    File arquivo = new File("imagem.png"); // NOTA: coloque aqui o path para sua imagem, e não apenas o nome como eu fiz
    imagem = ImageIO.read(arquivo); 
} catch (IOException e) { 
    e.printStackTrace(); 
}


Ta aí, agora é só trabalhar em cima da sua imagem utilizando os métodos que a classe BufferedImage te oferece.

Mas então eu tenho que criar uma classe para o BufferedImage ? e depois importa-lá para minha classe lampada? é isso não sei se entendi direito.


Não necessáriamente, você pode criar o objeto BufferedImage dentro da sua classe lâmpada se quiser mas criar a classe contendo suas imagens e importá-la também funciona, apenas selecione a melhor forma de estruturar seu projeto no seu caso.

OK entendi, você poderia me explicar linha por linha desse código que você me mandou, pois estou tentando achar algum conteúdo sobre os mesmo no google, porem sem resultados, desde já agradeço.
GOSTEI 0
Sadasd

Sadasd

08/11/2019

O java tem uma classe específica para imagens, se chama BufferedImage, faça seu método retornar uma BufferedImage ao invés de uma String.
Será que poderia me dar um exemplo simples para que eu possa entender melhor pois esse comando bufferedImage é novo para mim.


Não é muito complicado, olha esse exemplo:

BufferedImage imagem = null;
try {
    File arquivo = new File("imagem.png"); // NOTA: coloque aqui o path para sua imagem, e não apenas o nome como eu fiz
    imagem = ImageIO.read(arquivo); 
} catch (IOException e) { 
    e.printStackTrace(); 
}


Ta aí, agora é só trabalhar em cima da sua imagem utilizando os métodos que a classe BufferedImage te oferece.

Mas então eu tenho que criar uma classe para o BufferedImage ? e depois importa-lá para minha classe lampada? é isso não sei se entendi direito.


Não necessáriamente, você pode criar o objeto BufferedImage dentro da sua classe lâmpada se quiser mas criar a classe contendo suas imagens e importá-la também funciona, apenas selecione a melhor forma de estruturar seu projeto no seu caso.

OK entendi, você poderia me explicar linha por linha desse código que você me mandou, pois estou tentando achar algum conteúdo sobre os mesmo no google, porem sem resultados, desde já agradeço.


Ok, olha isso aqui:

    File arquivo = new File("imagem.png"); /*Selecionamos o arquivo que queremos criando um objeto do tipo File, e passando como argumento para o construtor o path e nome do arquivo desejado */ 


Porém, sempre que quisermos implementar algum código que utilize um arquivo precisamos declarar que o mesmo está sujeito a uma exception que diz que o arquivo ou path especificado não foi encontrado, fazemos isso assim:

try {
    File arquivo = new File("imagem.png"); 
} catch (IOException e) { // A IOException é a exception à qual me referi acima
    e.printStackTrace(); 
}


Pronto, pegamos nosso arquivo, mas não o queremos em forma de arquivo, mas sim de imagem, e já que BufferedImage é uma subclasse de File podemos fazer o seguinte:

try {
    File arquivo = new File("imagem.png");
    BufferedImage imagem = ImageIO.read(arquivo); /* por questões de escopo de variáveis é necessário colocar a BufferedImage aqui dentro para que ela tenha acesso ao File que criamos */
} catch (IOException e) { 
    e.printStackTrace(); 
}


Só que no código acima o BufferedImage que criamos vai ficar preso dentro do escopo do try catch, então não poderemos utilizá-lo em outros lugares, para resolver isso criamos o BufferedImage antes do try catch e apenas atribuimos o valor dele no try catch:

BufferedImage imagem; // O grande problema agora é que o BufferedImage está sem valor nenhum
try {
    File arquivo = new File("imagem.png");
    imagem = ImageIO.read(arquivo); 
} catch (IOException e) { 
    e.printStackTrace(); 
}


Como pode ver acima, nós não inicializamos o BufferedImage, então não poderemos utilizá-lo, pois o try catch não é garantido de cair no try, pode ocorrer um erro e cair no catch, então temos duas opções, inicializar a BufferedImage nos dois caminhos(try e catch), ou continuar inicializando apenas no try mas dar um valor para ela logo na declaração, o valor que daremos é o valor default de todo objeto, ou seja, null:

BufferedImage imagem = null; // Agora o código não vai quebrar se você tentar utilizar o objeto imagem
try {
    File arquivo = new File("imagem.png");
    imagem = ImageIO.read(arquivo); 
} catch (IOException e) { 
    e.printStackTrace(); 
}
GOSTEI 0
João Silva

João Silva

08/11/2019

O java tem uma classe específica para imagens, se chama BufferedImage, faça seu método retornar uma BufferedImage ao invés de uma String.
Será que poderia me dar um exemplo simples para que eu possa entender melhor pois esse comando bufferedImage é novo para mim.


Não é muito complicado, olha esse exemplo:

BufferedImage imagem = null;
try {
    File arquivo = new File("imagem.png"); // NOTA: coloque aqui o path para sua imagem, e não apenas o nome como eu fiz
    imagem = ImageIO.read(arquivo); 
} catch (IOException e) { 
    e.printStackTrace(); 
}


Ta aí, agora é só trabalhar em cima da sua imagem utilizando os métodos que a classe BufferedImage te oferece.

Mas então eu tenho que criar uma classe para o BufferedImage ? e depois importa-lá para minha classe lampada? é isso não sei se entendi direito.


Não necessáriamente, você pode criar o objeto BufferedImage dentro da sua classe lâmpada se quiser mas criar a classe contendo suas imagens e importá-la também funciona, apenas selecione a melhor forma de estruturar seu projeto no seu caso.

OK entendi, você poderia me explicar linha por linha desse código que você me mandou, pois estou tentando achar algum conteúdo sobre os mesmo no google, porem sem resultados, desde já agradeço.


Ok, olha isso aqui:

    File arquivo = new File("imagem.png"); /*Selecionamos o arquivo que queremos criando um objeto do tipo File, e passando como argumento para o construtor o path e nome do arquivo desejado */ 


Porém, sempre que quisermos implementar algum código que utilize um arquivo precisamos declarar que o mesmo está sujeito a uma exception que diz que o arquivo ou path especificado não foi encontrado, fazemos isso assim:

try {
    File arquivo = new File("imagem.png"); 
} catch (IOException e) { // A IOException é a exception à qual me referi acima
    e.printStackTrace(); 
}


Pronto, pegamos nosso arquivo, mas não o queremos em forma de arquivo, mas sim de imagem, e já que BufferedImage é uma subclasse de File podemos fazer o seguinte:

try {
    File arquivo = new File("imagem.png");
    BufferedImage imagem = ImageIO.read(arquivo); /* por questões de escopo de variáveis é necessário colocar a BufferedImage aqui dentro para que ela tenha acesso ao File que criamos */
} catch (IOException e) { 
    e.printStackTrace(); 
}


Só que no código acima o BufferedImage que criamos vai ficar preso dentro do escopo do try catch, então não poderemos utilizá-lo em outros lugares, para resolver isso criamos o BufferedImage antes do try catch e apenas atribuimos o valor dele no try catch:

BufferedImage imagem; // O grande problema agora é que o BufferedImage está sem valor nenhum
try {
    File arquivo = new File("imagem.png");
    imagem = ImageIO.read(arquivo); 
} catch (IOException e) { 
    e.printStackTrace(); 
}


Como pode ver acima, nós não inicializamos o BufferedImage, então não poderemos utilizá-lo, pois o try catch não é garantido de cair no try, pode ocorrer um erro e cair no catch, então temos duas opções, inicializar a BufferedImage nos dois caminhos(try e catch), ou continuar inicializando apenas no try mas dar um valor para ela logo na declaração, o valor que daremos é o valor default de todo objeto, ou seja, null:

BufferedImage imagem = null; // Agora o código não vai quebrar se você tentar utilizar o objeto imagem
try {
    File arquivo = new File("imagem.png");
    imagem = ImageIO.read(arquivo); 
} catch (IOException e) { 
    e.printStackTrace(); 
}
Ok entendi muito obrigado porem ainda não consegui, acredito ter feito tudo certo porem esta dando erro nessa linha

imagem = ImageIO.read(arquivo);

Não sei se interferi em algo faz estou fazendo pela ide NetBeans será que você poderia me mostrar como ficaria dentro do exemplo que eu dei no começo do tópico? Desde já muitíssimo obrigado pela atenção e pela explicação.
GOSTEI 0
Sadasd

Sadasd

08/11/2019

Aqui:


public BufferedImage lampadaAcesa(){ //faça um método igual para a lâmpada apagada, porém com o path indicando a foto da lâmpada apagada.
BufferedImage imagem = null;
try {
    File arquivo = new File("C:/users/daniel/fotos/img700890.png");
    imagem = ImageIO.read(arquivo); 
} catch (IOException e) { 
    e.printStackTrace(); 
}
return imagem;
}




package componentes.casa;

public class Lampada
{
public int estado = 1;

public void lampada_ligada()
{
estado = 1;
}
public void lampada_desligada()
{
estado = 0;
}
public BufferedImage estado_lampada() //mudei de String para BufferedImage
{
if(estado == 1)
{
return lampadaAcesa(); <---------- Estou querendo por a imagem aqui, será que é possivel?
}
else
{
return lampadaApagada();
}

}
}
GOSTEI 0
POSTAR