Como tratar os botões de JOptionPane.showConfirmDialog();
Como sabemos são três botões, como fazer para tratar cada um deles?!?!?!
Como tratar os botões de JOptionPane.showConfirmDialog();
Como sabemos são três botões, como fazer para tratar cada um deles?!?!?!
O que vc quer dizer com tratar?
Receber o valor? salvar… o que exatamente?
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.
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?
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á.
Tem um código pronto?
Posta aqui vamos ver o que da pra fazer…
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);
}
}
Coloca entre as tags cod
Do modo que está fica dificil de olhar o código.
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.
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";

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);
}
}
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.
FUNCIONOU BEM!!!
Valeu.
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.