GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Como acessar variável que está dentro de uma classe interna por outra classe?

Tags: #<Tag:0x00007f6d50ee9520> #<Tag:0x00007f6d50ee93e0> #<Tag:0x00007f6d50ee92a0>

Boa tarde, o problema é que eu tenho um JFrame com nome “game” que está dentro de uma classe interna com nome Comum, que por sua vez está dentro de uma classe chamada MenuSnakes, com isso eu quero acessar o JFrame game por outra classes. Como posso realizar esse acesso? Sendo mais detalhado eu queria fechar esse JFrame por outra classe.

public class Comum implements ActionListener {
		
		protected JFrame game = new JFrame ("SNAKE GAME");
		
		SnakeComum startComum = new SnakeComum (); 
		
		@Override
		public void actionPerformed(ActionEvent JogarComum) {
			
			game.setBounds(10, 10, 905, 700);
			game.setBackground(Color.WHITE);
			game.setResizable(false);
			game.setVisible(true);
			game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			game.setDefaultCloseOperation(game.HIDE_ON_CLOSE);
			game.add(startComum);
			
			escolherCobra.dispose();
		}
	}

Cria um método fechar na classe Comum e aí chama esse método.

Para isso eu precisaria instanciar a classe interna, certo? Porém eu tento instancia-la pela outra classe e minha operação é bloqueada. Como eu posso fazer isso?

Onde ela é instanciada hoje?
Porque ela é uma classe interna? Ela está declarada dentro de qual classe?

A classe Comum (interna) está dentro da classe MenuSnakes e é instanciada dentro do contrutor de MenuSnakes.

public class MenuSnakes {
        // Algumas variaveis 
        public MenuSnakes (){
                Comum jogarComum = new Comum ();``
                // Restante do código
         }

public class Comum implements ActionListener{
	
 protected JFrame game = new JFrame ("SNAKE GAME");		
	
	@Override
	public void actionPerformed(ActionEvent JogarComum){
		
		game.setBounds(10, 10, 905, 700);
		game.setBackground(Color.WHITE);
		game.setResizable(false);
		game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		game.setDefaultCloseOperation(game.HIDE_ON_CLOSE);
		game.setLocationRelativeTo(null);
		game.add(startComum);
		game.setVisible(true);

	}
}

}

Transforma a variável local jogarComum em uma variável de instância e põe o método na classe MenuSnakes.