Como fazer fechar somente uma JFrame?

Olá eu quero fazer fechar somente uma JFrame do meu jogo , ou seja, não quero usar o System.exit(0), então por favor me ajudem com os códigos .
Coloquei um botão de Sair para configurar:

btnSair = new JButton("Sair");
		btnSair.setForeground(Color.BLUE);
		btnSair.setFont(new Font("Tahoma", Font.PLAIN, 30));
		btnSair.setBackground(Color.ORANGE);
		btnSair.setBounds(1185, 11, 177, 59);
		frmDivisão.getContentPane().add(btnSair);
btnSair.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
			
			
				int Sair = JOptionPane.showConfirmDialog(null, "Tem certeza que quer sair do jogo ?");
				if(Sair==JOptionPane.YES_OPTION) {
                   System.exit(0);
				}
				if(Sair==JOptionPane.NO_OPTION) {
					gerarValores();
				}
			
			}

			
		});

Use o dispose(); ao invés de system.exit(0);

1 curtida

Eu ja tentei usar pelo dispose mas deu erro .O que posso fazer???

E tb eu estou usando o eclipse

Posta o código onde deu erro com o dispose.

Nesse momento nao poderei postar o código com erro,mas mais tarde certamente postarei.

Vc nao acha o dispose nao usa somente no netbens?

Não entendi sua pergunta.

Vc nao acha que no eclipse sempre da erro em usar o dispose ()? E NO NetBeans DA CERTO?

Dispose é do Java e não da IDE, só falar pra gente o só que vc tá tendo que já ajuda a saber o que ocorre

Não, são métodos das classes Java, não tem nada a ver com o ambiente de desenvolvimento.
O que está dando errado quando você chama o método dipose()?

Tu usou o this.dispose(); ou só dispose(); ?

Usei o this.dispose();

Erro de lógica.

Imagino que seu código esteja assim:

A região em amarelo é o escopo da classe anônima que implementa ActionListener, o this faz você referenciar explicitamente ela, mas ela não possui nenhum método dispose(), quem tem é a classe mais externa cujo escopo está evidenciado em rosa.

Então tira fora o this ou chama explicitamente SuaClasseExterna.this.dispose().

1 curtida

Vou tentar deste jeito !!OBRIGADO!!!

usa só dispose(); caso não tenha usado ainda

1 curtida

Eu tentei desse jeito:
E não deu certo

   btnSair = new JButton("Sair");
			btnSair.setFont(new Font("Tahoma", Font.PLAIN, 30));
			btnSair.setForeground(new Color(255, 255, 255));
			btnSair.setBackground(new Color(0, 0, 200));
			btnSair.setBounds(1185, 11, 177, 59);
			frmMultiplicação.getContentPane().add(btnSair);
			btnSair.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent arg0) {
				
				
					int Sair = JOptionPane.showConfirmDialog(null, "Tem certeza que quer sair do jogo ?");
					if(Sair==JOptionPane.YES_OPTION) {
						multiplicação.this.dispose();
					}
					if(Sair==JOptionPane.NO_OPTION) {
						gerarValores();
					}
				
				}	
			});

coloca assim frmMultiplicação.this.dispose();

e a variável multiplicação nem existe


e eivta usar acentos no seu código

é que "multiplicação " é a classe

e o que é isso?


mostra seu código todo, mais facil