0

重複の可能性:
JLabel にハイパーリンクを追加する方法

「JLabel」を使用して段落を表示しています。その段落の一部を新しいポップアップを開くリンクとして作成する必要があります。これを行う方法を教えてください。

this is ABC application and here is the introduction of the app:
  this is line one
  this is line two
  this is line three

ここでは、ポップアップを開くためのクリック可能なリンクとして「two」という単語を作成する必要があります。

4

2 に答える 2

4

個人的には、JPanel の代わりに JEditorPane を使用することをお勧めします。段落を表示するのにはるかに便利で、リンクなどの HTML を表示できます。その後、単に addHyperlinkListener(Some hyperlinklistener) を呼び出して、誰かがリンクをクリックしたときに呼び出されるリスナーを追加できます。何かをポップアップするか、クリックしたものを実際のブラウザで開くかは、あなた次第です。

以下にコード例を示します (まだテストしていませんが、動作するはずです)。

JEditorPane ep = new JEditorPane("text/html", "Some HTML code will go here. You can have <a href=\"do1\">links</a> in it. Or other <a href=\"do2\">links</a>.");
ep.addHyperlinkListener(new HyperlinkListener() {
         public void hyperlinkUpdate(HyperlinkEvent arg0) {
            String data = arg0.getDescription();
            if(data.equals("do1")) {
                //do something here
            }
            if(data.equals("do2")) {
                //do something else here
            }
        }
    });
于 2012-07-24T04:32:02.630 に答える
1

通常、ラベルをクリック可能にしたい場合は、ボタンにするだけです。私は最近、ボタンの代わりにラベルを使用しました。これは、外観を制御する方が簡単で (アイコンの周りに境界線がない)、アプリケーションが表示しているデータに応じてラベルの外観を変えたいからです。しかし、とにかく JButton を使用してすべてを実行できたはずです。

JLabel の一部だけをクリック可能にしたい場合は、さらに複雑になります。マウスがクリックされたときに相対マウス座標をチェックして、クリック可能にしたいラベルの部分に対応しているかどうかを確認する必要があります。

あるいは、代わりにJEditorPaneを見たいと思うかもしれません。これにより、swing アプリに HTML を配置でき、おそらく HyperLinkListener を実装できます。

ただし、最初に要求したように、アクションを起動するためにラベルが必要な場合は、次のようにマウスリスナーを追加できます。

noteLabel = new JLabel("click me");
noteLabel.addMouseListener( new MouseAdapter() {
    public void mousePressed(MouseEvent e) {
        System.out.println("Do something");
    }

    public void mouseEntered(MouseEvent e) {
        //You can change the appearance here to show a hover state
    }

    public void mouseExited(MouseEvent e) {
        //Then change the appearance back to normal.
    }
});
于 2012-07-24T04:38:37.547 に答える