Buscar

08LDP_doc03

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Exercício 
 
Neste exemplo é construído um pequeno editor de texto que permite, ler e guardar o texto 
introduzido. A primeira coisa que deve fazer quando projeta uma interface gráfica é fazer um 
pequeno esboço da mesma. Assim, o esboço da GUI que vamos construir é o seguinte. 
 
 
 
 
 
Com o NetBeans, vamos criar um novo projeto Java para área de trabalho Java. 
Daremos o nome desse projeto de Aula 8. Em seguida, crie um novo formulário JFrame. Utilize 
o botão direito do mouse para acessar o atalho e escolha a opção novo – formulário JFrame. 
Esse programa terá uma barra de menu e um JTextArea, responsável pela edição do arquivo. 
Construindo o Menu: 
Com a paleta, na opção Menus Swing, pegue e arraste uma Barra de Menu para o seu projeto. 
Altere os nomes das opções para Arquivo e Sair. Esta barra de Menu já vem com dois JMenu’s 
embutidos. 
No menu Arquivo, coloque dois Item de Menu, através do mesmo processo (Arrastando da 
paleta para o projeto). Nomeie como Abrir e Salvar, respectivamente. 
No menu Sair, coloque um Item de Menu. Nomeie como Exit. Aproveite para programar logo 
esse evento. Na Propriedade Action, escolha a opção quit, que é uma ação já definida pelo 
NetBeans para sair. 
 
Programe as propriedades de evento Action para abrir e salvar respectivamente para os itens 
de menu de Arquivo. 
 
O código deverá ser como o apresentado abaixo. 
 
 
/* 
 * EditorTexto.java 
 * 
 * Created on 23/05/2011, 13:05:35 
 */ 
 
package exemplos; 
 
import java.io.BufferedReader; 
 
 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.util.StringTokenizer; 
import javax.swing.JFileChooser; 
import javax.swing.JOptionPane; 
import org.jdesktop.application.Action; 
 
/** 
 * 
 * @author Eduardo Pareto 
 */ 
public class EditorTexto extends javax.swing.JFrame { 
 
 private String nomeArquivo; //guarda o nome do arquivo 
 
 /** Cria o novo form EditorTexto */ 
 public EditorTexto() { 
 initComponents(); 
 } 
 
 @SuppressWarnings("unchecked") 
 // <editor-fold defaultstate="collapsed" desc="Generated Code"> 
 private void initComponents() { 
 
 jScrollPane1 = new javax.swing.JScrollPane(); 
 txt = new javax.swing.JTextArea(); 
 jMenuBar1 = new javax.swing.JMenuBar(); 
 jMenu1 = new javax.swing.JMenu(); 
 jMenuItem1 = new javax.swing.JMenuItem(); 
 jMenuItem3 = new javax.swing.JMenuItem(); 
 jMenu2 = new javax.swing.JMenu(); 
 jMenuItem2 = new javax.swing.JMenuItem(); 
 
 setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
 org.jdesktop.application.ResourceMap resourceMap = 
org.jdesktop.application.Application.getInstance(adivinhanumerodkt.Jogar.class).getContext().
getResourceMap(EditorTexto.class); 
 setTitle(resourceMap.getString("Form.title")); 
 setName("Form"); 
 
 jScrollPane1.setName("jScrollPane1"); 
 
 txt.setColumns(20); 
 txt.setRows(5); 
 txt.setName("txt"); // NOI18N 
 jScrollPane1.setViewportView(txt); 
 
 jMenuBar1.setName("jMenuBar1"); 
 jMenu1.setText(resourceMap.getString("jMenu1.text")); 
 jMenu1.setName("jMenu1"); 
 jMenu1.setPreferredSize(new java.awt.Dimension(101, 19)); 
 
 javax.swing.ActionMap actionMap = 
 
 
org.jdesktop.application.Application.getInstance(adivinhanumerodkt.Jogar.class).getContext().
getActionMap(EditorTexto.class, this); 
 jMenuItem1.setAction(actionMap.get("abrir")); 
 jMenuItem1.setText(resourceMap.getString("jMenuItem1.text")); // NOI18N 
 jMenuItem1.setName("jMenuItem1"); // NOI18N 
 jMenuItem1.setPreferredSize(new java.awt.Dimension(109, 22)); 
 jMenu1.add(jMenuItem1); 
 
 jMenuItem3.setAction(actionMap.get("salvar")); 
 jMenuItem3.setText(resourceMap.getString("jMenuItem3.text")); // NOI18N 
 jMenuItem3.setName("jMenuItem3"); // NOI18N 
 jMenuItem3.setPreferredSize(new java.awt.Dimension(103, 22)); 
 jMenu1.add(jMenuItem3); 
 
 jMenuBar1.add(jMenu1); 
 
 jMenu2.setText(resourceMap.getString("jMenu2.text")); 
 jMenu2.setName("jMenu2"); // NOI18N 
 
 jMenuItem2.setAction(actionMap.get("quit")); // NOI18N 
 jMenuItem2.setText(resourceMap.getString("jMenuItem2.text")); 
 jMenuItem2.setName("jMenuItem2"); // NOI18N 
 jMenuItem2.setPreferredSize(new java.awt.Dimension(121, 22)); 
 jMenu2.add(jMenuItem2); 
 
 jMenuBar1.add(jMenu2); 
 
 setJMenuBar(jMenuBar1); 
 
 javax.swing.GroupLayout layout = 
new javax.swing.GroupLayout(getContentPane()); 
 getContentPane().setLayout(layout); 
 layout.setHorizontalGroup( 
 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
 .addGroup(layout.createSequentialGroup() 
 .addContainerGap() 
 .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 400, 
Short.MAX_VALUE) 
 .addGap(137, 137, 137)) 
 ); 
 layout.setVerticalGroup( 
 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
 .addGroup(layout.createSequentialGroup() 
 .addContainerGap() 
 .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 261, 
Short.MAX_VALUE) 
 .addGap(116, 116, 116)) 
 ); 
 
 pack(); 
 }// </editor-fold> 
 
 /** 
 * @param args Os argumentos da linha de comando 
 */ 
 public static void main(String args[]) { 
 java.awt.EventQueue.invokeLater(new Runnable() { 
 public void run() { 
 
 
 new EditorTexto().setVisible(true); 
 } 
 }); 
 } 
 
 @Action 
 public void abrir() { 
 JFileChooser file =new JFileChooser(); 
 file.setDialogTitle("Abrir"); 
 int opcao = file.showOpenDialog(this); 
 if(opcao != JFileChooser.APPROVE_OPTION) 
 return; 
 String filename = file.getSelectedFile().getAbsolutePath(); 
 BufferedReader in =null; 
 // Este código assume que um arquivo não tem mais do que 64K. 
 try{ 
 in = new BufferedReader(new FileReader(filename)); 
 StringBuffer buf = new StringBuffer(10000); 
 String aux; 
 while((aux = in.readLine())!=null){ 
 buf.append(aux); 
 buf.append("\n"); 
 } 
 // Se já leu adiciona-se o texto e guarda-se o nome do arquivo 
 txt.setText(buf.toString()); 
 nomeArquivo = filename; 
 }catch (FileNotFoundException e){ 
 mensagemErro("Abrir","Erro de abertura: "+ filename); 
 }catch (IOException e) { 
 mensagemErro("Abrir","Erro de leitura: "+ filename); 
 }finally{ 
 try { 
 if(in !=null) in.close(); 
 }catch(IOException ignore){} 
 } 
 } 
 
 @Action 
 public void salvar(){ 
 String filename; 
 // É a primeira vez que guarda? 
 if(nomeArquivo ==null){ 
 JFileChooser file = new JFileChooser(); 
 file.setDialogTitle("Guardar"); 
 int opcao = file.showSaveDialog(this); 
 if (opcao != JFileChooser.APPROVE_OPTION)return; 
 filename = file.getSelectedFile().getAbsolutePath(); 
 File f =new File(filename); 
 // O arquivo já existe então pede confirmação 
 if (f.exists()){ 
 int confirmacao = JOptionPane.showConfirmDialog( 
 this,"Este arquivo já existe. Tem a certeza que quer escrever por cima?", 
 "Guardar", JOptionPane.YES_NO_OPTION); 
 if (confirmacao == JOptionPane.NO_OPTION) 
 return; 
 } 
 } 
 
 
 else 
 filename = nomeArquivo; 
 BufferedWriter out =null; 
 try{ 
 out =new BufferedWriter(new FileWriter(filename)); 
 // Vamos escrever linha a linha a fim de utilizar o separador adequado 
 StringTokenizer linhas =new StringTokenizer(txt.getText(),"\n"); 
 while(linhas.hasMoreTokens()){ 
 out.write(linhas.nextToken()); 
 out.newLine(); 
 } 
 nomeArquivo = filename; 
 }catch (IOException e) { 
 mensagemErro("Guardar","Erro de escrita: "+ filename); 
 }finally{ 
 try { 
 if (out != null) out.close(); 
 }catch(IOException ignore){} 
 } 
 } 
 
 private void mensagemErro(String titulo, String mensagem){ 
 JOptionPane.showMessageDialog(this, mensagem, titulo, 
 JOptionPane.ERROR_MESSAGE); 
 } 
 
 // Início das declarações de variaveis 
 private javax.swing.JMenu jMenu1; 
 private javax.swing.JMenu jMenu2; 
 private javax.swing.JMenuBar jMenuBar1; 
 private javax.swing.JMenuItem jMenuItem1; 
 private javax.swing.JMenuItem jMenuItem2; 
 private javax.swing.JMenuItem jMenuItem3; 
 private javax.swing.JScrollPane jScrollPane1; 
 private javax.swing.JTextArea txt; 
 // Final das declarações de variaveis 
 
}

Outros materiais