5

長い質問をお詫び申し上げます。

先日フォーラムを閲覧していて、YouTubeや他のサイトにリンクしているテキストがいくつか見られました。私は常にハイライトしてからコピーして貼り付けるか、グーグルクロームブラウザで「移動」を右クリックする必要がありました。

私はJavaで少し遊んでいたので、アドレスを持つテキストへのリンクを提供する独自の小さなプログラムを作成することを考えました。たとえば、「ねえ、先日見たこのビデオをチェックしてください」と言った場合、YouTubeの部分をクリック可能にします。

そのようなことが可能かどうか誰かに教えてもらえますか?可能であれば、これにどのライブラリを使用する必要がありますか?最後に、Javaですべてのインポートとライブラリのリストを見つけるにはどうすればよいですか?

ありがとう。

4

1 に答える 1

21

でHTMLを使用し、URLのクリックを検出するためJEditorPaneに追加します。HyperLinkListener

デスクトップAPIを使用して、URLを使用してデフォルトのブラウザを開くよりも。

何かのようなもの:

ここに画像の説明を入力してください

import java.awt.Desktop;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;

public class Test {

    public static void main(String[] argv) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {

                JEditorPane jep = new JEditorPane();
                jep.setContentType("text/html");//set content as html
                jep.setText("Welcome to <a href='http://stackoverflow.com/'>StackOverflow</a>.");

                jep.setEditable(false);//so its not editable
                jep.setOpaque(false);//so we dont see whit background

                jep.addHyperlinkListener(new HyperlinkListener() {
                    @Override
                    public void hyperlinkUpdate(HyperlinkEvent hle) {
                        if (HyperlinkEvent.EventType.ACTIVATED.equals(hle.getEventType())) {
                            System.out.println(hle.getURL());
                            Desktop desktop = Desktop.getDesktop();
                            try {
                                desktop.browse(hle.getURL().toURI());
                            } catch (Exception ex) {
                                ex.printStackTrace();
                            }
                        }
                    }
                });


                JFrame f = new JFrame("HyperlinkListener");
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.add(jep);
                f.pack();
                f.setVisible(true);
            }
        });
    }
}
于 2013-01-05T08:43:24.730 に答える