Como passar um dado de um método void para outro método void?

Olá,eu tenho um método void chamado jframe e tenho outro método void chamado diálogo,fiz uma ação,esta ação foi quando chegado ao um certo lugar da imageicon com o " personagem" uma outra
imageicon fosse adicionada dentro dessa,mas está ação tem que ser feita justamente no método void diálogo então como faço para passar a imageicon para o método void jframe onde a mesma(imageIcon) está dentro do método void diálogo?
aqui está 2 prints para esclarecerem minha dúvida:
Método void diálogo:
Screenshot_6

PS: “frisky” é a coordenada y do meu personagem,são os locais onde,quando chegados,aparecessem a imageicon
Método jframe:
Screenshot_5

1 curtida

Precisaria de mais informações.

Por exemplo, em que classe estão os métodos jframe() e dialogo()? Estão dentro da mesma classe?

Se estiverem, eu faria algo assim:

class WhateverClass {
  private JFrame f; // tornaria f uma variável de instancia ao invés de local

  public void jframe() {
    f = new JFrame();
    /* ... */
  }

  public void dialogo() {
    /* ... */
    f.setIconImage( sans.getImage() );
    /* ... */
  }
}
1 curtida

Quando eu precisei usar algo assim, fiz a instanciação no escopo mais alto, como se fosse uma atributo da classe, antes de qualquer método para que todos os métodos vejam.
Exemplo, se instancia a Scanner scan = new Scanner(System.in); dentro de um método e precisar dela dentro de outro método, tem que repetir essa instanciação, mas se colocar antes de qualquer método, todos os métodos podem usar o objeto “scan”.

Olá,não deu certo,já deu de cara um erro.Sou iniciante em programação,poderia me ajudar mais?Estou fazendo um jogo,na verdade quero que quando passasse do final do ImageIcon,ele trocasse esse ImageIcon por outro,por exemplo:
O personagem está “passeando pela ImageIcon”,até ai tudo bem,mas quero que quando ele chagasse no final dessa ImageIcon,essa ImageIcon trocasse por outra ImageIcon,para isso eu criei 2 variáveis
Int x1
Int y1
E troquei o x e o y do personagem pelo x1 e pelo y1 assim
exemplo.setBounds(x1,y1, 103, 236);
E utilizei o sysout assim
System.out.println(x1);
System.out.println(y1);
Assim em cada lugar que ele andasse eu saberia das coordenadas
do x e y dele
então coordenei que se o x1 fosse > do que 500
Ele trocaria a imagem assim:
public void dialogo() {
if(x1 > 500){
background1.setIcon(background2);

     }

}
Mas ele não trocava
O estranho mesmo é que antes desse background eu tinha outro como
tela de inicio
Mas ele só mudava quando eu apertava a tecla Z
onde eu utilizei os métodos KeyListener
E a´consegue me ajudar?

Posso tentar te ajudar mais sim, mas vou precisar de maiores detalhes. Vc pode postar as suas classes completas?

import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.Image;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.print.DocFlavor.URL;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

public class UnderFan extends JFrame implements ActionListener{
private JFrame f;

int frisky =  100;
int friskx = 500;
ImageIcon friskdireito = new ImageIcon(getClass().getResource("player2.png"));
ImageIcon flowey = new ImageIcon(getClass().getResource("Toriel.png"));
ImageIcon sans = new ImageIcon(getClass().getResource("1dialog.png"));
JLabel sanes = new JLabel(sans);
ImageIcon frisktrás = new ImageIcon(getClass().getResource("player4.png"));
ImageIcon lobby = new ImageIcon(getClass().getResource("p.png"));
ImageIcon back1 = new ImageIcon(getClass().getResource("waterfall.png"));
ImageIcon friskfrente = new ImageIcon(getClass().getResource("player3.png"));

ImageIcon back = new ImageIcon(getClass().getResource("backtale.jpg"));
ImageIcon friskesquerdo = new ImageIcon(getClass().getResource("player.png"));
 JLabel friskdi = new JLabel(friskdireito);
 JLabel friskes = new JLabel(friskesquerdo);
 JLabel background = new JLabel(back);
 JLabel background1 = new JLabel(back1);
 JLabel lobbys = new JLabel(lobby);
 JLabel background2 = new JLabel(flowey);

public UnderFan() {
dialogo();
jframe();

}
public void jframe() {
f = new JFrame();

setSize(640,478);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
setTitle("UnderFan");
 friskdi.setBounds(0,50,42,71);
 friskes.setBounds(friskx,frisky,42,71);
 background.setBounds(0,0,640,478);
 background2.setBounds(0,0,640,478);
 sanes.setBounds(50,50,40,40);
 teclado();

	
 add(sanes);
 add(friskes);

 friskes.setVisible(false);
add(background);
try {Thread.sleep(3000);

friskes.setVisible(true);
}catch(Exception erro){}

}
public void teclado() {
addKeyListener(new KeyListener() {

	@Override
	public void keyPressed(KeyEvent e) {
		dialogo();
		System.out.println(e.getKeyCode());
		
	if(e.getKeyCode() == 90) {
	   
		try {Thread.sleep(3000);
		background.setIcon(back1);
		
		
		}catch(Exception erro) {}
		
	}
	if(e.getKeyCode() == 65) {
		friskes.setIcon(friskesquerdo);
		friskx -= 10;
		
}
	friskes.setBounds(friskx, frisky, 103, 236);
	if(e.getKeyCode() == 68) {
		friskes.setIcon(friskdireito);
		friskx += 10;
		
		friskes.setBounds(friskx, frisky, 103, 236);
	}
	if(e.getKeyCode() == 83) {
		friskes.setIcon(friskfrente);
		frisky += 10;
	
		friskes.setBounds(friskx, frisky, 103, 236);
	}
	
	if(e.getKeyCode() == 87) {
		friskes.setIcon(frisktrás);
		frisky -= 10;
		
		friskes.setBounds(friskx, frisky, 103, 236);
	}
	if(e.getKeyCode() == 67) {
		f.add(sanes);
			
	            
	
	
	
	}
	}
	
	@Override
	public void keyReleased(KeyEvent arg0) {
		if(arg0.getKeyCode() == 68) {
			friskes.setIcon(friskdireito);
		
	}
	
	if(arg0.getKeyCode() == 65 ) {
		friskes.setIcon(friskesquerdo);
		
		
		
		
		
	
	}
	
		
		
		
		
	
	
	if(arg0.getKeyCode() == 83) {
		friskes.setIcon(friskfrente);
		
		
		
	}
	
	if(arg0.getKeyCode() == 87) {
		friskes.setIcon(frisktrás);
		
	}
	
	
	   
	 }
	 
	
	
	public void keyTyped(KeyEvent arg0) {
		
		
	
	 
	 
	 
	 
	 
 
	 
	 
 
	}});}

public void dialogo() {
if(friskx > 100){
background1.setIcon(flowey);

       }




       }










public static void main(String[] args) {
	new UnderFan();
}

}

nesse caso quero que o background1 mude para o background flowey,mas não consigo

Olhei seu código e o testei, tive que fazer algumas modificações para ele funcionar.

O que eu vi foi que vc invoca o setBounds() no background e no background2.

Mais tarde vc invoca apenas add(background).

Faltou vc invocar o setBounds() no background1 e depois invocar o add(background1) também.