O q falta para a imagem aparecer

12 respostas
java
D

hola eu tentei faze achei ia rola mas ainda nao to compreendendo…
public class Principal {

public JFrame frame;
	public float comp, alt, larg, result;
	public JLabel text_comp, text_alt, text_larg;
	public JLabel text_result = new JLabel();
	public JTextField entrada_comp = new JTextField();
	public JTextField entrada_alt = new JTextField();
	public JTextField entrada_larg = new JTextField();;
	public JButton BTN_calcular;
	public float r;

	public Principal() {
		janela();
	}

	public void janela() {
		frame = new JFrame("Cal_L");
		componentes();
		frame.setSize(350, 300);
		frame.setLocationRelativeTo(null);
		frame.setLayout(null);
		frame.getContentPane().add(new Imagens(),BorderLayout.CENTER);
		frame.setVisible(true);

	}

	public void componentes() {

		this.text_comp = new JLabel();
		this.text_comp.setBounds(14, 25, 120, 30);
		this.text_comp.setText("COMPRIMENTO");
		this.frame.add(text_comp);

		this.entrada_comp.setBounds(27, 50, 60, 30);
		this.frame.add(entrada_comp);
		//
		this.text_alt = new JLabel();
		this.text_alt.setBounds(150, 25, 120, 30);
		this.text_alt.setText("ALTURA");
		this.frame.add(text_alt);

		this.entrada_alt.setBounds(143, 50, 60, 30);
		this.frame.add(entrada_alt);
		//
		this.text_larg = new JLabel();
		this.text_larg.setBounds(255, 25, 120, 30);
		this.text_larg.setText("LARGURA");
		this.frame.add(text_larg);

		this.entrada_larg.setBounds(252, 50, 60, 30);
		this.frame.add(entrada_larg);
		//
		this.BTN_calcular = new JButton("Calcular");
		this.BTN_calcular.setBounds(120, 120, 100, 50);

		BTN_calcular.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {

				calculos();
			}
		});

		this.frame.add(BTN_calcular);
		text_result.setBounds(150, 180, 100, 50);
		frame.add(text_result);
		//

	}

	public void calculos() {
		this.comp = Float.parseFloat(entrada_comp.getText());
		this.larg = Float.parseFloat(entrada_larg.getText());
		this.alt = Float.parseFloat(entrada_alt.getText());

		r = (comp * larg * alt) / 1000;

		text_result.setText("" + r);

	}

	public static void main(String[] args) {

		Principal p = new Principal();

	}

	public class Imagens extends JPanel{
		
		public BufferedImage imageL; 
		
		public void metodoImagem(){
			try {
				imageL = ImageIO.read(getClass().getResource("aquario.gif"));
			} catch (IOException e) {
				e.printStackTrace();
			}
			repaint();
		}
		
		public void paint(Graphics g) {
			g.drawImage(imageL, 100, 100, null);
			g.dispose();
		}

	}
}

12 Respostas

Lucas_Camara

Dá algum erro?

D

não so não aparece

Lucas_Camara

Em qual local do projeto está o arquivo aquario.gif?

D

na pasta res dentro do projeto e configurei para Biuld path

Lucas_Camara

Manda um print da estrutura do seu projeto pra gente ver.

staroski

Você não está chamando o “metodoImagem()” em lugar nenhum, é ele que inicializa sua imagem.

D

tentei crira um construtor na clase imagem e passar o metodoImagem(); mas da erro.

public Imagens() {

metodoImagem();

}

tentei tambem  assim mas nao deu 

Imagens  im1 = new Imagens();
public Principal() {
	janela();
}

public void janela() {
	frame = new JFrame("Cal_L");
	
	componentes();

	frame.setSize(350, 300);
	frame.setLocationRelativeTo(null);
//	frame.setLayout(null);
	im1.metodoImagem();
	frame.getContentPane().add(im1,BorderLayout.CENTER);
	
	frame.setVisible(true);

}
staroski

Como você está estendendo um JPanel (Swing) ao invés de um Panel (AWT), você precisa sobrescrever o método paintComponent(Graphics) ao invés do paint(Graphics).

Dê uma olhada no meu ImagePanel, o fonte dele pode ser útil pra você.

D
nada <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/s.pngweat.png?v=9" title=":sweat:" class="emoji" alt=":sweat:"><img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/c.pngonfounded.png?v=9" title=":confounded:" class="emoji" alt=":confounded:"> quando acho que intendo, vou e  da erro e  vejo que não entendi nada  vou voltar para outras coisa mis básicas depois tento entender isso.

public void painComponent(Graphics g) {

if (imageL == null) {

super.paintComponent(g);

g.drawImage(imageL, 100, 100, null);
g.dispose();
				return;
			}
	
		}
staroski

O nome do método está errado.

Tá, se a imagem for null você quer renderizar ela?
Reveja sua lógica.

D

mesmo sem o if nao vai. :cry:

staroski

Ajustou o nome do método?
Posta seu código completo.

Criado 9 de setembro de 2021
Ultima resposta 12 de set. de 2021
Respostas 12
Participantes 3