2013-08-26 40 views
0

我想用java應用程序(file.doc).i在word文檔中保存一個http鏈接,使用BufferedWriter類成功地將鏈接寫入Word文檔,但是Word文檔中的鏈接只是簡單的文本行。如果按ENTER鍵在文檔字按鈕則轉爲HTTP鏈接,這就是我想用我的Java應用程序執行,另存爲HTTP格式用java保存一個http鏈接到word文檔中BufferedWriter

這裏是我的代碼:

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.EventQueue; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.border.EmptyBorder; 
import javax.swing.JFileChooser; 
import javax.swing.JLabel; 
import javax.swing.JButton; 
import javax.swing.JOptionPane; 
import javax.swing.JTextPane; 
import java.awt.Font; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileWriter; 

import javax.swing.JTextField; 
import java.awt.Toolkit; 
import javax.swing.ImageIcon; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 


public class Save_file extends JFrame { 

    private JPanel contentPane; 
    public static JTextField textField; 
    JFileChooser chooser; 
    File file; 
    public static FileWriter fw; 
    public static BufferedWriter output; 
    String the_past; 

    /** 
    * Launch the application. 
    */ 
    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        Save_file frame = new Save_file(); 
        frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    /** 
    * Create the frame. 
    */ 
    public Save_file() { 
     setResizable(false); 

     setIconImage(Toolkit.getDefaultToolkit().getImage(Save_file.class.getResource("/Buttons/LogoIcon.png"))); 
     setTitle("Saving file"); 
     this.setSize(435, 300); 
     Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); 
     this.setLocation(dim.width/2-this.getSize().width/2, dim.height/2-this.getSize().height/2); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    // setBounds(100, 100, 435, 300); 
     contentPane = new JPanel(); 
     contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
     setContentPane(contentPane); 
     contentPane.setLayout(null); 

     JLabel lblNewLabel = new JLabel("Select a File :"); 
     lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 13)); 
     lblNewLabel.setBounds(12, 13, 152, 25); 
     contentPane.add(lblNewLabel); 

     JButton btnNewButton = new JButton(""); 
     btnNewButton.setIcon(new ImageIcon(Save_file.class.getResource("/Buttons/loaddisk (2).gif"))); 
     btnNewButton.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 

       try{ 


        output = new BufferedWriter(fw); 
        output.write(textField.getText()+"\n"); 
        output.write(" "); 
        JOptionPane.showMessageDialog(null, "Saving succes", "Save", JOptionPane.INFORMATION_MESSAGE); 
        //textField.setText(""); 
        output.write("\r"); 
        output.flush(); 
        output.close(); 


       } 
       catch(Exception io){ 
        JOptionPane.showMessageDialog(null, "Saving Failed", "Error", JOptionPane.ERROR_MESSAGE); 
       } 

      } 
     }); 
     btnNewButton.setBounds(142, 211, 32, 32); 
     contentPane.add(btnNewButton); 

     JLabel lblLink = new JLabel("Link "); 
     lblLink.setToolTipText("Just click once to past"); 
     lblLink.setFont(new Font("Tahoma", Font.BOLD, 13)); 
     lblLink.setBounds(12, 107, 97, 25); 
     contentPane.add(lblLink); 

     textField = new JTextField(); 
     textField.setToolTipText("Just click once to past"); 
     textField.addMouseListener(new MouseAdapter() { 
      @Override 
      public void mouseClicked(MouseEvent arg0) { 
       the_past= textField.getText(); 
       if (the_past.isEmpty()){ 
       textField.paste(); 
       } 
       //else 
        //textField.setText(""); 
      } 
     }); 
     textField.setColumns(10); 
     textField.setBounds(12, 154, 393, 33); 
     contentPane.add(textField); 

     JButton btnOpenFile = new JButton("Open File"); 
     btnOpenFile.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 

       try{ 

        chooser = new JFileChooser(); 
        int retval = chooser.showOpenDialog(Save_file.this); 


        if (retval == JFileChooser.APPROVE_OPTION) { 
         //... The user selected a file, get it, use it. 
         File file = chooser.getSelectedFile(); 
         System.out.println("File equals"+file); 
         fw = new FileWriter(file, true); 


        } 


       } 
       catch(Exception io){ 


       } 
      } 

     }); 
     btnOpenFile.setBounds(12, 53, 97, 25); 
     contentPane.add(btnOpenFile); 

     JButton button = new JButton(""); 
     button.setIcon(new ImageIcon(Save_file.class.getResource("/Buttons/cc.jpg.png"))); 
     button.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       System.exit(0); 
      } 
     }); 
     button.setBounds(243, 211, 35, 35); 
     contentPane.add(button); 
    } 
} 

the result of saving an exmple of link the result that supposed to be

+0

第一張照片是我的應用程序的簡單執行,第二張照片是它應該是 – BriniH

回答

2

不,你沒有這樣做。

您正在用您使用的字符串寫入文本(ASCII或UTF)文件,併爲該文件分配擴展名.doc。 .doc擴展名不會使您的文件成爲單詞文檔。 MS Word可以自動讀取文本文件並顯示它,但是您沒有寫入(我重複)一個Word文件。

搜索允許操作/創建Word文件的API(我認爲Apache有其中之一)。

+0

謝謝,但我只想要我寫的鏈接是藍色的,並在您點擊它時執行 – BriniH

+0

Word打開您的文件作爲文本文件,並不提供超鏈接渲染功能。最好的第二個選擇(用庫創建一個真正的word文檔)是編寫一個HTML文檔。 – SJuan76

1

如前所述,您將創建一個簡單的純文本文檔,該文檔不支持超鏈接。您應該查看Apache POI庫以創建一個Rich Text Format文檔。