2009-08-07 25 views
1

私は自分のコンピュータからそれを選択したHTMLファイルを示すためにこのコードを書いたと私はfaq.htmlよくあるように私のコンピュータでHTMLファイルを選択すると、このエラーメッセージが表示されます:!このコードでHTMLファイルが表示されないのはなぜですか?

java.net.MalformedURLException: no protocol: FAQ.html 
at java.net.URL.<init>(Unknown Source) 
at java.net.URL.<init>(Unknown Source) 
at java.net.URL.<init>(Unknown Source) 
at javax.swing.JEditorPane.setPage(Unknown Source) 
at org.bihe.com1112.FileViewer.actionPerformed(FileViewer.java:86) 
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) 
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) 
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) 
at javax.swing.DefaultButtonModel.setPressed(Unknown Source) 
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) 
at java.awt.Component.processMouseEvent(Unknown Source) 
at javax.swing.JComponent.processMouseEvent(Unknown Source) 
at java.awt.Component.processEvent(Unknown Source) 
at java.awt.Container.processEvent(Unknown Source) 
at java.awt.Component.dispatchEventImpl(Unknown Source) 
at java.awt.Container.dispatchEventImpl(Unknown Source) 
at java.awt.Component.dispatchEvent(Unknown Source) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) 
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) 
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) 
at java.awt.Container.dispatchEventImpl(Unknown Source) 
at java.awt.Window.dispatchEventImpl(Unknown Source) 
at java.awt.Component.dispatchEvent(Unknown Source) 
at java.awt.EventQueue.dispatchEvent(Unknown Source) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.run(Unknown Source) 





public class FileViewer extends JPanel implements ActionListener { 

/** 
* 
*/ 
private static final long serialVersionUID = 1L; 

JFileChooser chooser; 

FileNameExtensionFilter filter = null; 

JTextField text; 

JButton button; 

FileInputStream in; 

JEditorPane pane; 

public FileViewer(JEditorPane pane) { 
    this.pane = pane; 
    setLayout(new FlowLayout(FlowLayout.RIGHT)); 
    text = new JTextField("file...", 31); 
    text.setColumns(45); 
    text.revalidate(); 
    text.setEditable(true); 

    button = new JButton("Browse"); 
    add(text); 
    add(button); 
    filter = new FileNameExtensionFilter("html", "html"); 
    chooser = new JFileChooser(); 
    chooser.addChoosableFileFilter(filter); 

    button.addActionListener(this); 

} 

public void paintComponent(Graphics g) { 
    super.paintComponents(g); 
    Graphics2D graphic = (Graphics2D) g; 
    graphic.drawString("HTML File:", 10, 20); 

} 

public void actionPerformed(ActionEvent event) { 
    int returnVal = 0; 
    if (event.getSource() == button) { 
     returnVal = chooser.showOpenDialog(FileViewer.this); 
     if (returnVal == JFileChooser.APPROVE_OPTION) { 
      File file = chooser.getSelectedFile(); 
      text.setText(file.getName()); 
      if (file != null) { 
       try { 
        pane.setPage(file.getName()); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

      } else 

       System.err.println("Couldn't find this HTML file:" 
         + file.getName()); 

     } else 
      System.exit(0); 
    } 

    } 
} 
+0

エラーメッセージが表示されますか? –

答えて

3

あなたはなどのファイルプロトコルを使用して、ファイルのフルパスを指定する必要があります。

file:///c:/somefolder/FAQ.html 

あなたはURLを取得するためにURIを取得するためにfile.toURI()を使用して、uri.toURL()ことができます。

// file.toURL() has been deprecated, use file.toURI().toURL() instead 
pane.setPage(file.toURI().toURL()); 
+0

それは文字列になります!!! – Johanna

+0

だから? URLを文字列として 'JEditorPane.setPage()'に問題なく渡すことができます:http://java.sun.com/javase/6/docs/api/javax/swing/JEditorPane.html#setPage%28java。 lang.String%29 –

+2

答えがうまくいかないと言う前に試してください。 –

0

setPageはurlを期待しているので、pane.setPage(file.getName())の代わりにpane.setPage(file.toURL())を試してみるとよいでしょう。それを自分で試しました。

関連する問題