Programa Java interação com o usuário botão cancel/cancelar

Programa:
// Programa que soma dois números utilizando janelas para dar design para o programa

import javax.swing.JOptionPane;

public class AdicaoJanela
{
	public static void main(String[] args)
	{
		// pede para o usuário digitar dois números
		String numero1 = JOptionPane.showInputDialog(null, "Insira o primeiro número: ", "Calculadora", JOptionPane.PLAIN_MESSAGE);
		String numero2 = JOptionPane.showInputDialog(null, "Insira o segundo número: ", "Calculadora", JOptionPane.PLAIN_MESSAGE);
		   		
		// Forma de converter uma String para Double
		double n1 = Double.valueOf(numero1).doubleValue();
		double n2 = Double.valueOf(numero2).doubleValue();
		
        // calcula a soma dos dois números
		double soma = n1 + n2;
		String s = String.valueOf(soma); // Forma de converter um Double para String
		    		
		// Exibe a soma na tela do usuário
		JOptionPane.showMessageDialog(null, "A soma é: " + s, "Calculadora", JOptionPane.PLAIN_MESSAGE);
	}
}

Como eu faço para o programa parar de executar se o usuário clicou no botão cancel/cancelar da primeira janela que aparecer, ou seja, na janela que pede para o usuário digitar o primeiro número.

Se fosse uma janela do tipo: String.format(" ");
Eu utilizaria um comando if ()
O porém é que agora a janela é do tipo: JOptionPane.showInputDialog(" ");

public void CalculaSoma() {

    double numero1 = Double.parseDouble(JOptionPane.showInputDialog(null, "Insira o primeiro número: ", "Calculadora", JOptionPane.PLAIN_MESSAGE));
    double numero2 = Double.parseDouble(JOptionPane.showInputDialog(null, "Insira o segundo número: ", "Calculadora", JOptionPane.PLAIN_MESSAGE));
    double soma = numero1 + numero2;
    JOptionPane.showMessageDialog(null, soma);
}

//OBS COLOQUE ESSE CODIGO EM UM BOTÃO

@kaciocley gostei de saber que dava para fazer as conversões tudo direto em uma janela.

Mas como eu faço caso o usuário clique o botão cancel/cancelar?
Pois utilizando o seu programa, quando eu cliquei no botão cancel/cancelar da primeira janela que apareceu. foi exibido o seguinte erro:

Caso eu queira deixar os textos que são exibidos para o usuário, centralizados na janela, eu devo dar espaço no teclado ou tem um comando para deixar centralizado?
Caso exista um comando, tem também para deixar justificado, à direita e à esquerda?

Para que serve a palavra-chave null nos comando do JOptionPane, pois percebi que não preciso colocar toda hora essa palavra-chave. Porém tem momentos que da erro de compilação.

use uma IDE para fazer os seus códigos. eu indico Netbeans ou Eclipse.

Se o usuário clicar em Cancelar ou se apertar o botão ESC, o método showInputDialog() vai retornar o valor null, então vc poderia colocar um if para checar isso, ficaria assim:

String numero1 = JOptionPane.showInputDialog(null, "Insira o primeiro número: ", "Calculadora", JOptionPane.PLAIN_MESSAGE);

if (numero1 == null) {
  return;
}

String numero2 = JOptionPane.showInputDialog(null, "Insira o segundo número: ", "Calculadora", JOptionPane.PLAIN_MESSAGE);

// Restante do seu código...

Descobri que dá pra centralizar usando um JLabel , assim:

JLabel label = new JLabel("Hello, World!");
label.setHorizontalAlignment(SwingConstants.CENTER);
JOptionPane.showMessageDialog(null, label, "Minha mensagem", JOptionPane.PLAIN_MESSAGE);

Tecnicamente null não é uma palavra chave. Ele é um “literal null”. Da mesma forma que 123 não é uma palavra chave, mas sim um “literal inteiro”.

Bom, os métodos do JOptionPane como showMessageDialog() e showInputDialog() recebem como primeiro argumento um componente pai. Este componente pai é opcional e quando vc não quer passá-lo, vc usa null no lugar.

Um dos efeitos de ser filho de um outro componente é que a posição do painel na tela vai depender da posição do pai. Olha um exemplo de um showMessageDialog() com um JFrame como pai:

import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class App {
  public static void main(String... args) {
    JFrame frame = new JFrame("Hello");
    frame.setSize(300, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    JOptionPane.showMessageDialog(frame, "World", "Minha mensagem", JOptionPane.PLAIN_MESSAGE);
  }
}

@kaciocley obrigado :smile::pray:

@kaciocley estou acompanhando um livro, mais para frente estarei utilizando uma IDE. É que eu sou iniciante. Obrigado :smile:

@wldomiciano muito obrigado :smile::pray:

1 curtida