1   1  /  1  页   跳转

【转贴】 java浏览器

【转贴】 java浏览器

暂不支持css

/**
* @(#)WebBrowser.java
*/
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.event.MouseListener;
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileView;
import java.io.*;
import java.net.*;
import java.util.*;

public class WebBrowser extends JFrame implements HyperlinkListener,ActionListener{
       
    /**
    * Creates a new instance of <code>WebBrowser</code>.
    */
    //.......
   


   
    //.........
   
  //建立主件
 
  JToolBar bar =new JToolBar();//工具栏
 
 
  JTextField jurl=new JTextField(60);//地址栏
  JTextField jurlSource=new JTextField(60);//地址栏
  JEditorPane2 jEditorPane1=new JEditorPane2();//网页框
  JScrollPane scrollPane=new JScrollPane(jEditorPane1);//滚动条
  JFileChooser chooser=new JFileChooser();
  JFileChooser chooser1=new JFileChooser();//选择文件
  String htmlSource;
  JWindow window=new JWindow(WebBrowser.this);//使用指定的所有者框架创建窗口
 
  JButton button2=new JButton("go back");
  Toolkit toolkit=Toolkit.getDefaultToolkit();//获取默认工具包
 
  JMenuBar jMenuBar1=new JMenuBar();//建立菜单栏
 
  JMenu fileMenu=new JMenu("File(F)");//建立菜单组
  JMenuItem saveAsItem=new JMenuItem("save As(S)");
  JMenuItem exitItem=new JMenuItem("exit(E)");
 
  JMenu bookMarkMenu=new JMenu("bookMark(B)");//建立菜单组
  JMenuItem saveBookMarkItem=new JMenuItem("save bookmark(K)");
 
  JMenu editMenu=new JMenu("Edit(E)");//建立菜单组
  JMenuItem backItem=new JMenuItem("Back(Z)");
  JMenuItem forwardItem=new JMenuItem("Forward(P)");
 
  JMenu viewMenu=new JMenu("View(V)");//建立菜单组
  JMenuItem fullscreenItem=new JMenuItem("fullscreen(U)");
  JMenuItem sourceItem=new JMenuItem("source(C)");
  JMenuItem reloadItem=new JMenuItem("reload(R)");
 
  JToolBar toolBar=new JToolBar();
  JButton picSave=new JButton("save as");
  JButton picBack=new JButton("back");
  JButton picForward=new JButton("forward");
  JButton picView=new JButton("source");
  JButton picExit=new JButton("exit");
  //建立工具栏
 
 
  JLabel label=new JLabel("Adress");
  JButton button=new JButton("GO");
 
  JLabel labelSource=new JLabel("View Source");
  JButton buttonSource=new JButton("View");
 
  Box adress=Box.createHorizontalBox();  //创建一个从左到右显示其组件
  Box adressSource=Box.createHorizontalBox();
  private ArrayList history=new ArrayList();
  private int historyIndex;
 
 
 
 
 
    public WebBrowser() {
       
       
        setTitle("network by liujia");
        setResizable(false);//设置此 frame 是否可由用户调整大小
       
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   
        jEditorPane1.addHyperlinkListener(this);//事件监听
       
       
        bookMarkMenu.setMnemonic('B');
        saveBookMarkItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_K,InputEvent.CTRL_MASK));
        fileMenu.setMnemonic('F');
        saveAsItem.setMnemonic('S');
         saveAsItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
        exitItem.setMnemonic('P');
        exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK));
        //设置热键
       
        fileMenu.add(saveAsItem);
        fileMenu.addSeparator();
        fileMenu.add(exitItem);
       
        backItem.setMnemonic('B');
        backItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK));
        forwardItem.setMnemonic('D');
        forwardItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
        editMenu.setMnemonic('E');
        editMenu.add(backItem);
        editMenu.addSeparator();
        editMenu.add(forwardItem);
       
        viewMenu.setMnemonic('V');
        fullscreenItem.setMnemonic('U');
        fullscreenItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,InputEvent.CTRL_MASK));
        sourceItem.setMnemonic('C');
        sourceItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
        reloadItem.setMnemonic('R');
        reloadItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,InputEvent.CTRL_MASK));
       
        Container contentPane=getContentPane();
        scrollPane.setPreferredSize(new Dimension(100,500));
        contentPane.add(scrollPane,BorderLayout.SOUTH);
       
        adressSource.add(labelSource);
        adressSource.add(jurlSource);
        adressSource.add(buttonSource);
       
       
        toolBar.add(picSave);
        toolBar.addSeparator();
        toolBar.add(picBack);
        toolBar.addSeparator();
        toolBar.add(picForward);
        toolBar.addSeparator();
        toolBar.add(picView);
        toolBar.addSeparator();
        toolBar.add(picExit);
        toolBar.addSeparator();
        toolBar.add(picExit);
        toolBar.addSeparator();
       
        toolBar.add(adressSource);
       
        contentPane.add(bar,BorderLayout.CENTER);
        contentPane.add(toolBar,BorderLayout.NORTH);
       
        viewMenu.add(fullscreenItem);
        viewMenu.addSeparator();
        viewMenu.add(sourceItem);
        viewMenu.addSeparator();
        viewMenu.add(reloadItem);
       
        bookMarkMenu.add(saveBookMarkItem);
       
       
        jMenuBar1.add(fileMenu);
        jMenuBar1.add(editMenu);
        jMenuBar1.add(viewMenu);
        jMenuBar1.add(bookMarkMenu);
       
        setJMenuBar(jMenuBar1);
       
        adress.add(label);
        adress.add(jurl);
        adress.add(button);
        bar.add(adress);
       
       
        saveAsItem.addActionListener(this);
        picSave.addActionListener(this);
        exitItem.addActionListener(this);
        picExit.addActionListener(this);
        backItem.addActionListener(this);
        picBack.addActionListener(this);
        forwardItem.addActionListener(this);
        picForward.addActionListener(this);
        fullscreenItem.addActionListener(this);
   
        sourceItem.addActionListener(this);
        picView.addActionListener(this);
        reloadItem.addActionListener(this);
        button.addActionListener(this);
        buttonSource.addActionListener(this);
        jurl.addActionListener(this);
        jurlSource.addActionListener(this);   
        saveBookMarkItem.addActionListener(this);
       
     
       
       
    }
  //..................
   
    //.....

   
最后编辑2007-06-04 09:38:51
分享到:
gototop
 


        public void actionPerformed(ActionEvent e)
        {
       
        String url="";
        if(e.getSource()==button){    //按down.................................................
            url=jurl.getText();
            if(url.length()>0&&url.startsWith("http://")){
                try{
                    jEditorPane1.setPage(url);
                    history.add(url);
                    historyIndex=history.size()-1;// 返回此列表中的元素数
                    jEditorPane1.setEditable(false);
                    jEditorPane1.revalidate();
                    }
                    catch(Exception ex){
                        JOptionPane.showMessageDialog(WebBrowser.this,"don't open the search page","network",JOptionPane.ERROR_MESSAGE);
                        }
                }
                else if(url.length()>0&&!url.startsWith("http://")){
                    url="http://"+url;
                    try{
                        jEditorPane1.setPage(url);
                       history.add(url);
                       historyIndex=history.size()-1;// 返回此列表中的元素数
                       jEditorPane1.setEditable(false);
                       jEditorPane1.revalidate();
                        }
                         catch(Exception ex){
                        JOptionPane.showMessageDialog(WebBrowser.this,"don't open the search page","network by liujia",JOptionPane.ERROR_MESSAGE);
                        }   
                    }
                 else if(url.length()==0){
                      JOptionPane.showMessageDialog(WebBrowser.this,"don't open the search page","network by liujia",JOptionPane.ERROR_MESSAGE);
                       
                     }
            }
            //............按回车
            else if(e.getSource()==jurl){
                   url=jurl.getText();
                  
                   if(url.length()>0&&url.startsWith("http://")){
                try{
                    jEditorPane1.setPage(url);
                    history.add(url);
                    historyIndex=history.size()-1;// 返回此列表中的元素数
                    jEditorPane1.setEditable(false);
                    jEditorPane1.revalidate();
                    jurl.setMaximumSize(jurl.getPreferredSize());
                    }
                    catch(Exception ex){
                        JOptionPane.showMessageDialog(WebBrowser.this,"don't open the search page","network by liujia",JOptionPane.ERROR_MESSAGE);
                        }
                   }
                  
                   else if(url.length()>0&&!url.startsWith("http://")){
                    url="http://"+url;
                    try{
                        jEditorPane1.setPage(url);
                       history.add(url);
                       historyIndex=history.size()-1;// 返回此列表中的元素数
                       jEditorPane1.setEditable(false);
                       jEditorPane1.revalidate();
                        }
                         catch(Exception ex){
                        JOptionPane.showMessageDialog(WebBrowser.this,"don't open the search page","network by liujia",JOptionPane.ERROR_MESSAGE);
                        }   
                    }
                   else if(url.length()==0){
                      JOptionPane.showMessageDialog(WebBrowser.this,"don't open the search page","network by liujia",JOptionPane.ERROR_MESSAGE);
                       
                     }
               
               
                }
               
                //..................................另存为
               
         else if(e.getSource()==picSave||e.getSource()==saveAsItem){
                url=jurl.getText().trim();//去掉字符串头和尾的空格
                if(url.length()>0&&!url.startsWith("http://")){
                     url="http://"+url;
               
                    }
                    if(!url.equals("")){
                         saveFile(url);
                        }
                        else{
                             JOptionPane.showMessageDialog(WebBrowser.this,"please input url's adress","network by lijia",JOptionPane.ERROR_MESSAGE);
                
                            }
             }   
               
        //exit...
        else if(e.getSource()==exitItem||e.getSource()==picExit){
            System.exit(0);
            }
           
        //back.
        else if(e.getSource()==backItem||e.getSource()==picBack){
           
             historyIndex--;
             if(historyIndex<0)
                 historyIndex=0;
                 url=jurl.getText();
                 try{
                     url=(String)history.get(historyIndex);
                     jEditorPane1.setPage(url);
                     jurl.setText(url.toString());
                     jEditorPane1.setEditable(false);
                     jEditorPane1.revalidate();
                     /**
                      *public void revalidate()支持推迟的自动布局。
调用 invalidate 并将此组件的 validateRoot 添加到需要验证的组件列表中。调度完当前所有未完成的事件后进行验证。换句话说,调用此方法后,将验证浏览此组件的包含层次结构时找到的第一个 validateRoot(如果有)。默认情况下,JRootPane、JScrollPane 和 JTextField 从 isValidateRoot 返回 true。

当属性值更改,从而影响此组件的大小、位置或内部布局时,就对此组件自动调用此方法。这种自动更新不同于 AWT,因为通常来说,程序不再需要调用 validate 来获得要更新的 GUI 的内容。

                      *
                      **/
                     }
             catch(Exception ex){
                
                 }
            }
           
            //forworad.....   
        else if(e.getSource()==forwardItem||e.getSource()==picForward){
             historyIndex++;
             if(historyIndex>=history.size())
                 historyIndex=history.size()-1;
                 url=jurl.getText();
                 try{
                      url=(String)history.get(historyIndex);
                      jEditorPane1.setPage(url);
                      jurl.setText(url.toString());
                      jEditorPane1.setEditable(false);
                      jEditorPane1.revalidate();
                     }
                     catch(Exception ex){
                         }
           
            }   
               
        //fullscreen
        else if(e.getSource()==fullscreenItem){
             boolean add_button2=true;
            
            }   
               
               
               
        //查看原文件       
        else if(e.getSource()==sourceItem||e.getSource()==picView){
            url=jurl.getText().toString().trim();
            if(url.length()>0&&!url.startsWith("http://")){
                url="http://"+url;
                }
                if(!url.equals("")){
                     getHtmlSource(url);
                     ViewSourceFrame vsframe=new ViewSourceFrame(htmlSource);
                     vsframe.setBounds(0,0,800,500);
                     vsframe.setVisible(true);
                    }
                else{
                     JOptionPane.showMessageDialog(WebBrowser.this,"please input url's adress","network by lijia",JOptionPane.ERROR_MESSAGE);
                
                    }
            }   
               
gototop
 

//查看网页原代码
       
            else if(e.getSource()==buttonSource||e.getSource()==jurlSource){
            url=jurlSource.getText().toString().trim();
            if(url.length()>0&&!url.startsWith("http://")){
                url="http://"+url;
                }
                if(!url.equals("")){
                     getHtmlSource(url);
                     ViewSourceFrame vsframeSource=new ViewSourceFrame(htmlSource);
                     vsframeSource.setBounds(0,0,800,500);
                     vsframeSource.setVisible(true);
                    }
                else{
                     JOptionPane.showMessageDialog(WebBrowser.this,"please input url's adress","network by lijia",JOptionPane.ERROR_MESSAGE);
                
                    }
            }   
                //....................收藏夹
         else if(e.getSource()==saveBookMarkItem){
               
            
             }
                //................
           
            //刷新
            else if(e.getSource()==reloadItem){
                 url=jurl.getText();
                 if(url.length()>0&&url.startsWith("http://")){
                      try{
                           jEditorPane1.setPage(url);
                           jEditorPane1.setEditable(false);
                           jEditorPane1.revalidate();
                          }
                         
                          catch(Exception ex){
                              }
                             
                
                     }
                    
                    
                     else if(url.length()>0&&!url.startsWith("http://")){
                          url="http://"+url;
                          try{
                               jEditorPane1.setPage(url);
                               jEditorPane1.setEditable(false);
                               jEditorPane1.revalidate();
                              }
                              catch(Exception ex){
                                  }
                         }
                }       
        }
        //.............savefile
        void saveFile(final String url){
             final String linesep=System.getProperty("line.separator");//获得指定键指示的系统属性
             chooser1.setCurrentDirectory(new File("."));//设置当前目录
             chooser1.setDialogType(JFileChooser.SAVE_DIALOG);//设置此对话框的类型,||指示 JFileChooser 支持 "Save" 文件操作的类型值
             chooser1.setDialogTitle("Save as..");//设置显示在 JFileChooser 窗口标题栏的字符串
             if(chooser1.showSaveDialog(this)!=JFileChooser.APPROVE_OPTION)// 弹出一个 "Save File" 文件选择器对话框||选择确认(yes、ok)后返回该值
                 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+" had saved to"+linesep+fileName.getAbsolutePath();//返回抽象路径名的绝对路径名字符串
                              String dTitle="Save as";
                              int dType=JOptionPane.INFORMATION_MESSAGE;
                              JOptionPane.showMessageDialog((Component)null,dMessage,dTitle,dType);
                              }
                          catch(java.net.MalformedURLException muex){
                              JOptionPane.showMessageDialog((Component)null,muex.toString(),"network by liujia",JOptionPane.ERROR_MESSAGE);
                              }
                          catch(Exception ex){
                              JOptionPane.showMessageDialog((Component)null,ex.toString(),"network by liujia",JOptionPane.ERROR_MESSAGE);
                             
                             
                                 }       
                             
                              }
                         
                          };
                          thread.start();
                    
                    
           
            }
        //....................
       
        //getsource
        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(),"network by liujia",JOptionPane.ERROR_MESSAGE);
                 }
                
             catch(Exception e){
                 JOptionPane.showMessageDialog(WebBrowser.this,e.toString(),"network by liujia",JOptionPane.ERROR_MESSAGE);
                
                 }
           
            }
    //............
        public void hyperlinkUpdate(HyperlinkEvent e)
       
        {
            try{
                if(e.getEventType()==HyperlinkEvent.EventType.ACTIVATED)
                   
                   
                    jEditorPane1.setPage(e.getURL());
                    jurl.setText(e.getURL().toString());
                    history.add(e.getURL().toString());
                    historyIndex=history.size()-1;
                   
                   
                }
            catch(Exception ex){
                ex.printStackTrace(System.err);
                }
        }
   
    /**
    * @param args the command line arguments
    */
    public static void main(String[] args) {
        // TODO code application logic here
       
        try {
           
            UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());//使用 LookAndFeel 对象设置当前的默认外观
           
        }
        catch(Exception e)
        {
   
        }
       
        WebBrowser webBrowser=new WebBrowser();
        webBrowser.pack();
        webBrowser.setVisible(true);
    }
   
   
       
    class JEditorPane2 extends JEditorPane implements MouseListener {

  private static final long serialVersionUID = -2308615404205560110L;

  private JPopupMenu pop = null; // 弹出菜单

  private JMenuItem copy = null, paste = null, cut = null; // 三个功能菜单

  public JEditorPane2() {
  super();
  init();
  }

  private void init() {
  this.addMouseListener(this);
  pop = new JPopupMenu();
  pop.add(copy = new JMenuItem("COPY"));
  pop.add(paste = new JMenuItem("PASTE"));
  pop.add(cut = new JMenuItem("CUT"));
  copy.setAccelerator(KeyStroke.getKeyStroke('C', InputEvent.CTRL_MASK));
  paste.setAccelerator(KeyStroke.getKeyStroke('V', InputEvent.CTRL_MASK));
  cut.setAccelerator(KeyStroke.getKeyStroke('X', InputEvent.CTRL_MASK));
  copy.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    action(e);
    }
  });
  paste.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    action(e);
    }
  });
  cut.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    action(e);
    }
  });
  this.add(pop);
  }

  /**
  * 菜单动作
  * @param e
  */
  public void action(ActionEvent e) {
  String str = e.getActionCommand();
  if (str.equals(copy.getText())) { // 复制
    this.copy();
  } else if (str.equals(paste.getText())) { // 粘贴
    this.paste();
  } else if (str.equals(cut.getText())) { // 剪切
    this.cut();
  }
  }

  public JPopupMenu getPop() {
  return pop;
  }

  public void setPop(JPopupMenu pop) {
  this.pop = pop;
  }

  /**
  * 剪切板中是否有文本数据可供粘贴
  *
  * @return true为有文本数据
  */
  public boolean isClipboardString() {
  boolean b = false;
  Clipboard clipboard = this.getToolkit().getSystemClipboard();
  Transferable content = clipboard.getContents(this);
  try {
    if (content.getTransferData(DataFlavor.stringFlavor) instanceof String) {
    b = true;
    }
  } catch (Exception e) {
  }
  return b;
  }
gototop
 

/**
  * 文本组件中是否具备复制的条件
  *
  * @return true为具备
  */
  public boolean isCanCopy() {
  boolean b = false;
  int start = this.getSelectionStart();
  int end = this.getSelectionEnd();
  if (start != end)
    b = true;
  return b;
  }

  public void mouseClicked(MouseEvent e) {
  }

  public void mouseEntered(MouseEvent e) {
  }

  public void mouseExited(MouseEvent e) {
  }

  public void mousePressed(MouseEvent e) {
  if (e.getButton() == MouseEvent.BUTTON3) {
    copy.setEnabled(isCanCopy());
    paste.setEnabled(isClipboardString());
    cut.setEnabled(isCanCopy());
    pop.show(this, e.getX(), e.getY());
  }
  }

  public void mouseReleased(MouseEvent e) {
  }

}
}

//////////////////////////////////////////////////////////

/**
* @(#)ViewSourceFrame.java
*/
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileView;
import java.io.*;
import java.util.*;

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 ();
    TextAreaMenu jTextArea1 = new TextAreaMenu ();

    String htmlSource;


public ViewSourceFrame (String htmlSource) {
       
        this.htmlSource = htmlSource;
        enableEvents (AWTEvent.WINDOW_EVENT_MASK);
        setSize (new Dimension (600,500));
        setTitle ("source");
        setDefaultCloseOperation (WindowConstants.DISPOSE_ON_CLOSE);
       
        contentPane = (JPanel)getContentPane ();
        contentPane.setLayout (new BorderLayout());
       
        panel2.setLayout (new FlowLayout());
       
        savebutton.setText ("save");
        closebutton.setText ("quit");
       
closebutton.addActionListener(this);
        savebutton.addActionListener(this);
       
        jScrollPanel.getViewport ().add (jTextArea1,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.jTextArea1.setEditable (true);
        this.jTextArea1.setText (this.htmlSource);
     
this.jTextArea1.setCaretPosition (0);
    }
   
    /**

*/
//.......
class TextAreaMenu extends JTextArea implements MouseListener {

  private static final long serialVersionUID = -2308615404205560110L;

  private JPopupMenu pop = null; // 弹出菜单

  private JMenuItem copy = null, paste = null, cut = null; // 三个功能菜单

  public TextAreaMenu() {
  super();
  init();
  }

  private void init() {
  this.addMouseListener(this);
  pop = new JPopupMenu();
  pop.add(copy = new JMenuItem("COPY"));
  pop.add(paste = new JMenuItem("PASTE"));
  pop.add(cut = new JMenuItem("CUT"));
  copy.setAccelerator(KeyStroke.getKeyStroke('C', InputEvent.CTRL_MASK));
  paste.setAccelerator(KeyStroke.getKeyStroke('V', InputEvent.CTRL_MASK));
  cut.setAccelerator(KeyStroke.getKeyStroke('X', InputEvent.CTRL_MASK));
  copy.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    action(e);
    }
  });
  paste.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    action(e);
    }
  });
  cut.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    action(e);
    }
  });
  this.add(pop);
  }

  /**
  * 菜单动作
  * @param e
  */
  public void action(ActionEvent e) {
  String str = e.getActionCommand();
  if (str.equals(copy.getText())) { // 复制
    this.copy();
  } else if (str.equals(paste.getText())) { // 粘贴
    this.paste();
  } else if (str.equals(cut.getText())) { // 剪切
    this.cut();
  }
  }

  public JPopupMenu getPop() {
  return pop;
  }

  public void setPop(JPopupMenu pop) {
  this.pop = pop;
  }

  /**
  * 剪切板中是否有文本数据可供粘贴
  *
  * @return true为有文本数据
  */
  public boolean isClipboardString() {
  boolean b = false;
  Clipboard clipboard = this.getToolkit().getSystemClipboard();
  Transferable content = clipboard.getContents(this);
  try {
    if (content.getTransferData(DataFlavor.stringFlavor) instanceof String) {
    b = true;
    }
  } catch (Exception e) {
  }
  return b;
  }

  /**
  * 文本组件中是否具备复制的条件
  *
  * @return true为具备
  */
  public boolean isCanCopy() {
  boolean b = false;
  int start = this.getSelectionStart();
  int end = this.getSelectionEnd();
  if (start != end)
    b = true;
  return b;
  }

  public void mouseClicked(MouseEvent e) {
  }

  public void mouseEntered(MouseEvent e) {
  }

  public void mouseExited(MouseEvent e) {
  }

  public void mousePressed(MouseEvent e) {
  if (e.getButton() == MouseEvent.BUTTON3) {
    copy.setEnabled(isCanCopy());
    paste.setEnabled(isClipboardString());
    cut.setEnabled(isCanCopy());
    pop.show(this, e.getX(), e.getY());
  }
  }

  public void mouseReleased(MouseEvent e) {
  }

}




//........
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(jTextArea1.getText());
                writeOut.close();
            }
            catch (IOException ex) {
                System.out.println("save faild");
            }
        }
    }
}

gototop
 
1   1  /  1  页   跳转
页面顶部
Powered by Discuz!NT