/*显示源代码框架*/import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.filechooser.FileView;
import javax.swing.filechooser.FileFilter;
import java.io.*;
import java.util.*;public class ViewSourceFrame extends JFrame implements ActionListener{

JPanel contentPane;
JPanel panel1=new JPanel();
JPanel panel2=new JPanel();
Border border1;
    

JButton closebutton=new JButton();
JButton savebutton=new JButton();
JScrollPane jScrollpanel=new JScrollPane();
JTextArea jTextAreal=new JTextArea();

String htmlSource;

/*构造函数,初始化图形界面*/
public ViewSourceFrame(String htmlSource){

this.htmlSource=htmlSource;
enableEvents(AWTEvent.WINDOW_FOCUS_EVENT_MASK);
setSize(new Dimension(600,500));
setTitle("源代码");
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

contentPane=(JPanel)getContentPane();
contentPane.setLayout(new BorderLayout());

panel2.setLayout(new FlowLayout());

savebutton.setText("保存");
closebutton.setText("退出");

savebutton.addActionListener(this);
closebutton.addActionListener(this);

jScrollpanel.getViewport().add(jTextAreal,null);
border1=BorderFactory.createEmptyBorder(4,4,4,4);
panel1.setLayout(new BorderLayout());
panel1.setBorder(border1);
panel1.add(jScrollpanel,BorderLayout.CENTER);
contentPane.add(panel1,BorderLayout.CENTER);

panel2.add(savebutton);
panel2.add(closebutton);

contentPane.add(panel2,BorderLayout.SOUTH);
this.jTextAreal.setEditable(true);
this.jTextAreal.setText(this.htmlSource);
//设置光标的位置,将其移动到文本区第0个位置
this.jTextAreal.setCaretPosition(0);
}

//实现监听器接口的actionPerformed函数
public void actionPerformed(ActionEvent e){
String url="";
if(e.getSource()==closebutton){
dispose();
}
else if(e.getSource()==savebutton){
JFileChooser fc=new JFileChooser();
int returnVal=fc.showSaveDialog(ViewSourceFrame.this);
File saveFile=fc.getSelectedFile();
try{
FileWriter writeOut=new FileWriter(saveFile);
writeOut.write(jTextAreal.getText());
writeOut.close();
}catch(Exception ex){
PrintWriter pw=new PrintWriter(System.out,true);
pw.println("保存失败");
}
}
}

}

解决方案 »

  1.   

    //接上  
    //保存文件的函数 
        void saveFile(final String url){ 
         final String linesep=System.getProperty("line.separator"); 
         chooser1.setCurrentDirectory(new File(".")); 
         chooser1.setDialogType(JFileChooser.APPROVE_OPTION); 
         chooser1.setDialogTitle("另存为"); 
         if(chooser1.showSaveDialog(this)!=JFileChooser.APPROVE_OPTION) 
         return; 
         this.repaint(); 
         Thread thread=new Thread(){ 
         public void run(){ 
         try{ 
         java.net.URL source=new URL(url); 
         InputStream in=new 
         BufferedInputStream(source.openStream()); 
         BufferedReader br=new BufferedReader(new InputStreamReader(in)); 
         File fileName=chooser1.getSelectedFile(); 
         FileWriter out=new FileWriter(fileName); 
         BufferedWriter bw=new BufferedWriter(out); 
         String line; 
         while((line=br.readLine())!=null){ 
         bw.write(line); 
         bw.newLine(); 
         } 
         bw.flush(); 
         bw.close(); 
         out.close(); 
         String dMessage=url+"已经被保存至"+linesep 
         +fileName.getAbsolutePath(); 
         String dTitle="另存为"; 
         int dType=JOptionPane.INFORMATION_MESSAGE; 
         JOptionPane.showMessageDialog((Component)null,dMessage,dTitle,dType); 
         }catch(java.net.MalformedURLException muex){ 
         JOptionPane.showMessageDialog((Component)null,muex.toString(),"网页浏览器", 
         JOptionPane.ERROR_MESSAGE); 
         } 
         catch(Exception ex){ 
         JOptionPane.showMessageDialog((Component)null, 
         ex.toString(),"网页浏览器",JOptionPane.ERROR_MESSAGE); 
         } 
         } 
         }; 
         thread.start(); 

         
        
        //获得源代码的函数 
        void getHtmlSource(String url){ 
         String linesep,htmlLine; 
         linesep=System.getProperty("line.separator"); 
         htmlSource=""; 
         try{ 
         java.net.URL source=new URL(url); 
         InputStream in=new BufferedInputStream(source.openStream()); 
         BufferedReader br=new BufferedReader(new 
         InputStreamReader(in)); 
         while((htmlLine=br.readLine())!=null){ 
         htmlSource=htmlSource+htmlLine+linesep; 
         } 
         
         } 
         catch(java.net.MalformedURLException muex){ 
         JOptionPane.showMessageDialog(WebBrowser.this, muex.toString(),"网页浏览器" 
         ,JOptionPane.ERROR_MESSAGE); 
         } 
         catch(Exception e){ 
         JOptionPane.showMessageDialog(WebBrowser.this, e.toString(),"网页浏览器", 
         JOptionPane.ERROR_MESSAGE); 
         } 
         
        } 
         
         
        //实现监听器接口的hyperlinkUpdate函数 
        public void hyperlinkUpdate(HyperlinkEvent e){ 
         try{ 
         if(e.getEventType()==HyperlinkEvent.EventType.ACTIVATED) 
         jEditorPanel.setPage(e.getURL()); 
         }catch(Exception ex){ 
         ex.printStackTrace(System.err); 
         } 
         } 
         
         
         
        //主函数生成一个IE对象 
        public static void main(String[] args){ 
         try{ 
         UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); 
         }catch(Exception e){} 
         WebBrowser webBrowser=new WebBrowser(); 
         webBrowser.pack(); 
         webBrowser.setResizable(true); 
         webBrowser.setVisible(true); 
        }