Criando uma aplicação que imprimi o Código-Fonte de uma URL especificada pelo usuário em Java

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JToolBar;

// Autor: João Matheus Santos Assis

public class CodigoFonte extends JFrame{
   
    private JToolBar Barra_Ferramenta = new JToolBar();
    private JTextField Texto = new JTextField();
    private JButton Button_Atualizar = new JButton("Atualizar");
    private JTextArea Imprimindo_CodigoFonte = new JTextArea();

    private JPopupMenu Botão_Esquerdo = new JPopupMenu();

        private JMenuItem Popup_MenuItem_Copiar = new JMenuItem("Copiar");
        private JMenuItem Popup_MenuItem_SelecionarTudo = new JMenuItem("Selecionar tudo");
   
    public CodigoFonte(){
        super("Codigo-Fonte");
       
      Barra_Ferramenta.add(Texto);
      Barra_Ferramenta.add(Button_Atualizar);
      add(BorderLayout.NORTH, Barra_Ferramenta);
     
      Botão_Esquerdo.add(Popup_MenuItem_Copiar);
      Botão_Esquerdo.addSeparator();
      Botão_Esquerdo.add(Popup_MenuItem_SelecionarTudo);
     
     
      // Ativa a quebra automática de linha
      Imprimindo_CodigoFonte.setLineWrap(true);
      /* Desativando edição do arquivo (ou seja, o usuário fica
       impossibilitado de apagar, por exemplo parte do código-fonte)*/

      Imprimindo_CodigoFonte.setEditable(false);
      /* Adicionando o JTextArea na janela e interando a ele a
       barra de rolagem (JScrollPane)*/

      add(new JScrollPane(Imprimindo_CodigoFonte), BorderLayout.CENTER);
     
     
      // Eventos com o botão esquerdo de mouse
            Imprimindo_CodigoFonte.addMouseListener(new MouseAdapter(){
               
              public void mouseReleased(MouseEvent event){
                 
                if (event.isPopupTrigger())
                    Botão_Esquerdo.show(event.getComponent(), event.getX(), event.getY());
            }
        });
     
     
     
        Button_Atualizar.addActionListener(new ActionListener(){
           
            public void actionPerformed(ActionEvent event){
               
                // Deixando em branco o JTextArea
                Imprimindo_CodigoFonte.setText("");
               
                URL Pagina = null;
                try {
                    /* É atribuido a Página o endereço digitado
                     pelo usuário no JTextField(Texto)*/

                    Pagina = new URL(Texto.getText());
                } catch (MalformedURLException ex){
                    ex.printStackTrace();
                }
               
               
                // Conectando com a URL
                URLConnection Conectando = null;
                try {
                    Conectando = Pagina.openConnection();
                } catch (IOException ex){
                    ex.printStackTrace();
                }
               
               
                BufferedReader Dentro = null;
                try {
                    Dentro = new BufferedReader(new InputStreamReader(Conectando.getInputStream()));
                } catch (IOException ex){
                    ex.printStackTrace();
                }
               
                // Parte responsável por imprimir o Codigo-Fonte do endereço digitado pelo usuário
                String Linha;
                try {
                    while ((Linha = Dentro.readLine()) != null)
                        Imprimindo_CodigoFonte.setText(Imprimindo_CodigoFonte.getText()+Linha+"\n");
                } catch (IOException ex){
                    ex.printStackTrace();
                }
              
                // Fechando a conecção
                try {
                    Dentro.close();
                } catch (IOException ex){
                    ex.printStackTrace();
                }
       
            }
        });


        // Eventos com o botão esquerdo do mouse
        ButtonHandler Handler = new ButtonHandler();
       
        Popup_MenuItem_Copiar.addActionListener(Handler);
        Popup_MenuItem_SelecionarTudo.addActionListener(Handler);
     
     
     
      // Propriedades do JFrame
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      this.setVisible(true);
      this.setSize(700,500);
      // Localizando o programa no monitor
      this.setLocation(50,50);
    }
   
   
   
      private class ButtonHandler implements ActionListener{
         
          public void actionPerformed(ActionEvent event){
             
              if (event.getSource() == Popup_MenuItem_Copiar)
                   // Copia todo texto selecionado
                  Imprimindo_CodigoFonte.copy();
                 
              if (event.getSource() == Popup_MenuItem_SelecionarTudo)
                   // Seleciona todo o texto
                  Imprimindo_CodigoFonte.selectAll();
          }
      }
   
   
    public static void main(String [] args){
        new CodigoFonte();
    }   
}


Palavras-Chaves: Codigo Fonte-URL-JTextField-JTextArea-JPopupMenu-Copiar-SelecionarTudo-Java.


Artigos relacionados em Java:



Feito no NetBeans-5.5.1 | Executável