Baixe o app para aproveitar ainda mais
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 }
Compartilhar