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:
- Reproduzindo a palheta RGB em Java
- Criando um JFrame em Java
- Trabalhando com JRadioButton em Java
- Calculadora simples em Java
- Trabalhando com JCheckBox em Java
- Inserindo uma URL em Java
- Introdução ao componente JSlider em Java
- Barra de Carregamento em Java
- IMC em Java
Feito no NetBeans-5.5.1 | Executável |