[Resolvido] Tratamento de botões JOptionPane

13 respostas
Flavio05

Como tratar os botões de JOptionPane.showConfirmDialog();

Como sabemos são três botões, como fazer para tratar cada um deles?!?!?!

13 Respostas

Ziru

O que vc quer dizer com tratar?
Receber o valor? salvar… o que exatamente?

Flavio05

Ziru:
O que vc quer dizer com tratar?
Receber o valor? salvar… o que exatamente?

O JOptionPane.showConfirmDialog exibe três botões, são eles: sim, não e cancelar.
Eu quero saber como definir uma ação para cada um deles, por exemplo:

Em um programa há um botão qualquer para fechar a aplicação, ao clicar neste botão será exibida um JOptionPane.showConfirmDialog, perguntando - “Deseja realmente sair?” e abaixo os três botões, ao clicar em “sim” a aplicação é finalizada e ao clicar em “não” ou em “cancelar” a aplicação continua a ser executada.

Mais ou menos isso.

Ziru

Flavio05:
Ziru:
O que vc quer dizer com tratar?
Receber o valor? salvar… o que exatamente?

O JOptionPane.showConfirmDialog exibe três botões, são eles: sim, não e cancelar.
Eu quero saber como definir uma ação para cada um deles, por exemplo:

Em um programa há um botão qualquer para fechar a aplicação, ao clicar neste botão será exibida um JOptionPane.showConfirmDialog, perguntando - “Deseja realmente sair?” e abaixo os três botões, ao clicar em “sim” a aplicação é finalizada e ao clicar em “não” ou em “cancelar” a aplicação continua a ser executada.

Mais ou menos isso.

Por mera curiosidade, qual seria a diferença do não para o cancelar?

Flavio05

Para o meu caso seria mais ou menos assim:

JOptionPane.showConfirmDialog(null, “Deseja salvar este arquivo na area de trabalho?”);

ao clicar em sim - o arquivo será salvo no desktop (ou em qualquer outro diretório predefinido);

ao clicar em não - será exibido JFileChooser para que seja escolhido o caminho a ser salvo o arquivo;

ao clicar em cancelar - o arquivo não será salvo.

Desenvolve ae.
Valeu, desde já.

Ziru

Tem um código pronto?
Posta aqui vamos ver o que da pra fazer…

Flavio05

Ta ae…

package xti.exercicios;

import java.awt.BorderLayout;

import java.awt.EventQueue;

import java.awt.Font;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.BufferedWriter;

import java.io.File;

import java.io.IOException;

import java.net.URI;

import java.nio.charset.Charset;

import java.nio.charset.StandardCharsets;

import java.nio.file.Files;

import java.nio.file.Path;

import java.nio.file.Paths;
import javax.swing.JButton;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.SwingConstants;

public class Flavio {

private JFrame TextEditor;
private JButton sobre;
private File file;
private File fileSC;
private Path path;
private Path pathSC;
private String s;
private JTextArea textArea;
private JButton salvar;
private Path pathslv;
private BufferedWriter b;
private Charset cod;
private JFileChooser slvc;
private JButton salvar_como;

/**
 * Launch the application.
 */
public static void main(String[] args) {
	EventQueue.invokeLater(new Runnable() {
		public void run() {
			try {
				Flavio window = new Flavio();
				window.TextEditor.setVisible(true);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	});
}

/**
 * Create the application.
 */
public Flavio() {
	initialize();
}

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
	TextEditor = new JFrame();
	TextEditor.setTitle("Text Editor");
	TextEditor.getContentPane().setFont(new Font("Comic Sans MS", Font.PLAIN, 11));
	
	JScrollPane barrarol = new JScrollPane();
	TextEditor.getContentPane().add(barrarol, BorderLayout.CENTER);
	
	JLabel titulo = new JLabel("Note Pad Java");
	titulo.setHorizontalAlignment(SwingConstants.CENTER);
	titulo.setFont(new Font("Comic Sans MS", Font.PLAIN, 26));
	barrarol.setColumnHeaderView(titulo);
	
	JPanel panel = new JPanel();
	barrarol.setRowHeaderView(panel);
	panel.setLayout(new GridLayout(4, 1, 0, 0));
	
	JButton abrir = new JButton("Abrir");
	abrir.setToolTipText("Abrir");
	abrir.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			//TODO --- Botão Abrir........
			JFileChooser c = new JFileChooser();
			c.showOpenDialog(TextEditor);
			file = c.getSelectedFile();
			
			try {
				/*
				 * Se path não tiver parametro será lançado um NullPointerException.
				 * NullPointerException é lançado quando um objeto não deve, mas está
				 * nulo. 
				 */
				path = Paths.get(file.getAbsolutePath());
				s = new String(Files.readAllBytes(path));
				textArea.setText(s);
			} catch (Exception e1) {
				JOptionPane.showMessageDialog(TextEditor, "Nada Carregado!!!");
			}
		}
	});
	abrir.setFont(new Font("Comic Sans MS", Font.PLAIN, 11));
	panel.add(abrir);
	
	salvar = new JButton("Salvar");
	salvar.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent arg0) {
			try{
				String caminho = path.toString();
				pathslv = Paths.get(caminho);
			} catch(NullPointerException npe){
				//TODO --- Criar uma nova janela para que seja informado o caminho.
				JOptionPane.showConfirmDialog(TextEditor, "Deseja salvar este arquivo na Area de Trabalho?");
			}
			cod = StandardCharsets.ISO_8859_1;
			/*
			 * Escrever o valor da textArea para um arquivo que tem 
			 * como caminho o arquivo já aberto.
			 */
			try{
				b = Files.newBufferedWriter(pathslv, cod);//Cria um novo BufferdWriter.
				String ff = textArea.getText();//Recupera o valor da TextArea.
				b.write(ff);
				b.flush();//Grava os dados no disco.
			} catch(Exception e){
				e.printStackTrace();
			} finally{
				if(b != null){
					try {
						b.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
			}
		
		
		}
	});
	salvar.setToolTipText("Salvar");
	salvar.setFont(new Font("Comic Sans MS", Font.PLAIN, 11));
	panel.add(salvar);
	
	salvar_como = new JButton("Salvar Como");
	salvar_como.addActionListener(new ActionListener() {
		

		public void actionPerformed(ActionEvent e) {
			
			slvc = new JFileChooser();
			slvc.showSaveDialog(TextEditor);//Abre a janela Salve.
			file = slvc.getSelectedFile();//Recupera o caminho do arquivo selecionado.
			cod = StandardCharsets.ISO_8859_1;
			
			try{
				String slvCM = file.getAbsolutePath();//Atribui o caminho absoluto do arquivo selecionado à uma String.
				pathSC = Paths.get(slvCM);//Cria o caminho.
				Files.createFile(pathSC);//Cria o arquivo.
				b = Files.newBufferedWriter(pathSC, cod);
				b.write(textArea.getText());
				b.flush();
			} catch(IOException  | NullPointerException e1) {
				// TODO Auto-generated catch block
				//e1.printStackTrace();
				JOptionPane.showMessageDialog(TextEditor, "Arquivo Não Salvo!!!");
			} finally{
				try{
					/*
					 * Caso haja alguma Exception acima este close não funciona.
					 * E será lançada o IOException e1.
					 */
					b.close();
				} catch(Exception e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
					//JOptionPane.showMessageDialog(null, "Tente Novamente.");
				}
			}
			
			
			
		}
	});
	salvar_como.setToolTipText("Salvar Como");
	salvar_como.setFont(new Font("Comic Sans MS", Font.PLAIN, 11));
	panel.add(salvar_como);
	
	sobre = new JButton("Sobre");//TODO --- Botao Fechar........
	sobre.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent arg0) {
			JOptionPane.showMessageDialog(TextEditor, "XXXXXXXXXXXXXXXXXX\n\n XXXXXXXXXXXXX\n XXXXXXXXXXXXXXXXXXXX");
		}
	});
	sobre.setToolTipText("Sobre");
	sobre.setFont(new Font("Comic Sans MS", Font.PLAIN, 11));
	panel.add(sobre);
	
	JScrollPane areaDeTexto = new JScrollPane();
	barrarol.setViewportView(areaDeTexto);
	
	JPanel panel_1 = new JPanel();
	areaDeTexto.setViewportView(panel_1);
	panel_1.setLayout(new BorderLayout(0, 0));
	
	textArea = new JTextArea();//TODO --- Text Area........
	textArea.setFont(new Font("Comic Sans MS", Font.PLAIN, 12));
	panel_1.add(textArea, BorderLayout.CENTER);
	TextEditor.setBounds(100, 100, 500, 300);
	TextEditor.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}

Ziru

Coloca entre as tags cod
Do modo que está fica dificil de olhar o código.

Flavio05

Ziru:
Coloca entre as tags cod
Do modo que está fica dificil de olhar o código.

Como melhorar a visualização???
Colocar como todos colocam com enumeração de linhas.

Ziru

Quando vc vai escrever algo tem essas opção aki

Então basta clicar em Code escrever o codio e clicar novamente em code

Ai o resultado fica assim

String s = "testando code";

Flavio05
package xti.exercicios;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingConstants;

public class Flavio {

private JFrame TextEditor;
private JButton sobre;
private File file;
private File fileSC;
private Path path;
private Path pathSC;
private String s;
private JTextArea textArea;
private JButton salvar;
private Path pathslv;
private BufferedWriter b;
private Charset cod;
private JFileChooser slvc;
private JButton salvar_como;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Flavio window = new Flavio();
window.TextEditor.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the application.
*/
public Flavio() {
initialize();
}

/**
* Initialize the contents of the frame.
*/
private void initialize() {
TextEditor = new JFrame();
TextEditor.setTitle("Text Editor");
TextEditor.getContentPane().setFont(new Font("Comic Sans MS", Font.PLAIN, 11));

JScrollPane barrarol = new JScrollPane();
TextEditor.getContentPane().add(barrarol, BorderLayout.CENTER);

JLabel titulo = new JLabel("Note Pad Java");
titulo.setHorizontalAlignment(SwingConstants.CENTER);
titulo.setFont(new Font("Comic Sans MS", Font.PLAIN, 26));
barrarol.setColumnHeaderView(titulo);

JPanel panel = new JPanel();
barrarol.setRowHeaderView(panel);
panel.setLayout(new GridLayout(4, 1, 0, 0));

JButton abrir = new JButton("Abrir");
abrir.setToolTipText("Abrir");
abrir.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//TODO --- Botão Abrir........
JFileChooser c = new JFileChooser();
c.showOpenDialog(TextEditor);
file = c.getSelectedFile();

try {
/*
* Se path não tiver parametro será lançado um NullPointerException.
* NullPointerException é lançado quando um objeto não deve, mas está
* nulo.
*/
path = Paths.get(file.getAbsolutePath());
s = new String(Files.readAllBytes(path));
textArea.setText(s);
} catch (Exception e1) {
JOptionPane.showMessageDialog(TextEditor, "Nada Carregado!!!");
}
}
});
abrir.setFont(new Font("Comic Sans MS", Font.PLAIN, 11));
panel.add(abrir);

salvar = new JButton("Salvar");
salvar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
try{
String caminho = path.toString();
pathslv = Paths.get(caminho);
} catch(NullPointerException npe){
//TODO --- Criar uma nova janela para que seja informado o caminho.
JOptionPane.showConfirmDialog(TextEditor, "Deseja salvar este arquivo na Area de Trabalho?");
}
cod = StandardCharsets.ISO_8859_1;
/*
* Escrever o valor da textArea para um arquivo que tem
* como caminho o arquivo já aberto.
*/
try{
b = Files.newBufferedWriter(pathslv, cod);//Cria um novo BufferdWriter.
String ff = textArea.getText();//Recupera o valor da TextArea.
b.write(ff);
b.flush();//Grava os dados no disco.
} catch(Exception e){
e.printStackTrace();
} finally{
if(b != null){
try {
b.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}


}
});
salvar.setToolTipText("Salvar");
salvar.setFont(new Font("Comic Sans MS", Font.PLAIN, 11));
panel.add(salvar);

salvar_como = new JButton("Salvar Como");
salvar_como.addActionListener(new ActionListener() {


public void actionPerformed(ActionEvent e) {

slvc = new JFileChooser();
slvc.showSaveDialog(TextEditor);//Abre a janela Salve.
file = slvc.getSelectedFile();//Recupera o caminho do arquivo selecionado.
cod = StandardCharsets.ISO_8859_1;

try{
String slvCM = file.getAbsolutePath();//Atribui o caminho absoluto do arquivo selecionado à uma String.
pathSC = Paths.get(slvCM);//Cria o caminho.
Files.createFile(pathSC);//Cria o arquivo.
b = Files.newBufferedWriter(pathSC, cod);
b.write(textArea.getText());
b.flush();
} catch(IOException | NullPointerException e1) {
// TODO Auto-generated catch block
//e1.printStackTrace();
JOptionPane.showMessageDialog(TextEditor, "Arquivo Não Salvo!!!");
} finally{
try{
/*
* Caso haja alguma Exception acima este close não funciona.
* E será lançada o IOException e1.
*/
b.close();
} catch(Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
//JOptionPane.showMessageDialog(null, "Tente Novamente.");
}
}



}
});
salvar_como.setToolTipText("Salvar Como");
salvar_como.setFont(new Font("Comic Sans MS", Font.PLAIN, 11));
panel.add(salvar_como);

sobre = new JButton("Sobre");//TODO --- Botao Fechar........
sobre.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
JOptionPane.showMessageDialog(TextEditor, "XXXXXXXXXXXXXXXXXX\n\n XXXXXXXXXXXXX\n XXXXXXXXXXXXXXXXXXXX");
}
});
sobre.setToolTipText("Sobre");
sobre.setFont(new Font("Comic Sans MS", Font.PLAIN, 11));
panel.add(sobre);

JScrollPane areaDeTexto = new JScrollPane();
barrarol.setViewportView(areaDeTexto);

JPanel panel_1 = new JPanel();
areaDeTexto.setViewportView(panel_1);
panel_1.setLayout(new BorderLayout(0, 0));

textArea = new JTextArea();//TODO --- Text Area........
textArea.setFont(new Font("Comic Sans MS", Font.PLAIN, 12));
panel_1.add(textArea, BorderLayout.CENTER);
TextEditor.setBounds(100, 100, 500, 300);
TextEditor.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Ziru

Bem testando aki se conseguiria executar algo conforme o retorno cheguei a esse codigo.
Você cria um metodo que chama seu JopionPane e então nele vc faz os teste e executa.

public static void retornoJopionPane(){ int i = JOptionPane.showConfirmDialog(null, "Deseja salvar este arquivo na Area de Trabalho?","TextEditor", 0); if(i == 0){ System.out.println("Salva o arquivo"); }else if (i == 1){ System.out.println("não salva o arquivo"); }
Se apertar em sim aki vai imprimir salva o arque se em não, não salva o arquivo.
Bem espero ter ajudado em algo.

Flavio05

FUNCIONOU BEM!!!

Valeu.

Ziru

Flavio05:
FUNCIONOU BEM!!!

Valeu.

Fico contente em poder ajudar.
Agora edita o titulo do tópico e poe [RESOLVIDO] antes do titulo, assim quem tiver essa mesma duvida pode se achar por aqui.

Abraço.

Criado 14 de dezembro de 2012
Ultima resposta 14 de dez. de 2012
Respostas 13
Participantes 2