2012-01-27 14 views
0

JTableに、各セルにURL + textを含む情報を表示するJava Desktopアプリケーションがあります。私はshow and open URL in cellへの困難に直面しているので、私はJEditorpaneにセルの内容を示す予定です。ユーザーはJEditorpaneにあるセルのコンテンツを開くことができ、ユーザーはコンテンツを簡単に表示および編集できます。JEditorpaneでクリック可能なURLを表示し、デフォルトのブラウザで開くことができますか?

もう一度URLをクリックできるようにして、ユーザがデフォルトのブラウザでURLを開けるようにするにはJEditorpaneとします。

ご注意:

  1. JEditorpaneペインは、テキストとURLの両方が含まれていますので、私は唯一のURLがクリックできるようにする必要があります。
  2. JEditorpaneは編集可能です。ユーザーはコンテンツを編集できます。
+1

BORより良い助け早くhttp://sscce.orgを投稿してください/あなたの問題を示す – mKorbel

+0

[テーブル内のURLをクリック可能なURLとして表示し、それらをデフォルトのブラウザで開く方法を教えてください](http://stackoverflow.com/questions/9029514/how-to-show- b) – trashgod

答えて

10
  1. HyperlinkListenerを実装します。例えば。 JavaDocsではJEditorPaneです。
  2. JEPにHTMLが表示され、コンテンツタイプがtext/htmlであり、編集可能でないことを確認してください。
  3. イベントの場合、URLにはDesktop.browse(URI)となります。
+0

助けていただきありがとうございますが、編集可能なJEPでこの機能を使用したいと思います。助けてください。 –

+1

モレ[ここ](http://stackoverflow.com/a/9029598/230513)。 – trashgod

8

Andrewの答えは正しいです。 JEditorPaneの編集可能なリンクは Processing hyperlinks in editable JEditorPane with HTMLEditorKitにあります。彼らはデスクトップ(@Andrewトンプソンが言及したクラス)に裏打ちされたHyperlinkActionと完全レンダラにハイパーリンクをサポートし

がいることを言及するのを忘れてしまった -

+0

それはきれいです。 +1: –

+0

編集ありがとうございます。私の英語は十分ではありません。 – StanislavL

+0

「ここに他の言語を挿入する」というスキルよりもはるかに優れています。 ;) –

5

あなたはJXTableとJXHyperlink(SwingX projectの両方)を使用して検討するかもしれません適切なレンダラは、クラスURI、URIを含む細胞にクリックしてボックスをオフに適切なデスクトップのアクションをトリガーするコードスニペットのためにデフォルトでインストールされます。

// quick model which returns URI class 
    DefaultTableModel model = new DefaultTableModel(0, 1) { 

     @Override 
     public boolean isCellEditable(int row, int column) { 
      return false; 
     } 

     @Override 
     public Class<?> getColumnClass(int columnIndex) { 
      return URI.class; 
     } 

    }; 
    // fill with supported uri types 
    model.addRow(new Object[]{new URI("mailto:[email protected]")}); 
    model.addRow(new Object[] {new URI("http://swingx.java.net")}); 
    model.addRow(new Object[] {new URI("http://stackoverflow.com/questions/9031371/how-to-show-url-as-a-click-able-url-in-jeditorpane-and-allow-them-to-open-in-def")}); 
    model.addRow(new Object[] {new URI("http://dummy.org")}); 
    // use in JXTable 
    JXTable table = new JXTable(model); 
    // that's it :-) 

補遺

URL +テキストのあなたの条件を見落とし - swingxのデフォルトサポートで、全細胞はクリック可能で、URLの文字列表現だけでなく

0
jep = new javax.swing.JEditorPane(); 
    jep.setEditable(false); 
    jep.setContentType("text/html"); 
    jep.addHyperlinkListener(new BrowserOpener()); 

    class BrowserOpener implements HyperlinkListener {  
     @Override 
     public void hyperlinkUpdate(HyperlinkEvent event) { 
      if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { 
       try { 
        Desktop.getDesktop().browse(event.getURL().toURI()); 
       } catch (IOException | URISyntaxException ex) { 
        // TODO 
       } 
      } 
     } 
    } 
関連する問題