3

次を使用して、フォントを変更しようとしました。

jLabel.setFont(new Font("Tahoma",1,20));

ただし、ここには、プレーン、ボールド、イタリック、ボールド + イタリックの 4 つのスタイルしかありません。

HTMLのリンクのように機能させたいのですが、マウスカーソルを合わせるとJLabelに下線が引かれます。

4

4 に答える 4

6

mKorbelへの私のコメントで導入された混乱を明確にする(またはしない:-)

いきなり Font を作成しないでください。ほとんどの場合、アプリケーション内の他のすべてのフォントと衝突します。代わりに、デフォルトを取得して (以下に示すスニペットのようにコンポーネント インスタンスから取得するか、UIManager から取得するかは問題ではありません)、派生させます。

属性を使用して導出する場合(mKorbelの回答から恥知らずにスティリング)、それは次のようなものです

JLabel label = new JLabel("some text - WE ARE UNDERLINED");
MouseListener l = new MouseAdapter() {
    Font original;

    @Override
    public void mouseEntered(MouseEvent e) {
        original = e.getComponent().getFont();
        Map attributes = original.getAttributes();
        attributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
        e.getComponent().setFont(original.deriveFont(attributes));
    }

    @Override
    public void mouseExited(MouseEvent e) {
        e.getComponent().setFont(original);
    }


};
label.addMouseListener(l);
JComponent content = new JPanel();
content.add(label);
content.add(new JButton("dummy focus"));

ただし、注意してください: まだハイパーリンク機能は提供されません! そのため、ハイパーリンクが本当に求めているものである場合は、SwingX プロジェクトのfi JXHyperlink のように、そのような機能を備えた本格的なコンポーネントを使用することを検討してください。プロジェクト ホームで参照されているデモを実行することをお勧めします。

于 2012-09-12T15:05:30.777 に答える
4

適切に使用するMouseEvent

JLabel#setFont(new Font(attributes));

帰ってきた

JLabel#setFont(new Font("Serif", Font.BOLD, 16));

にラップされinvokeLater、定義から

final Map attributes = (new Font("Serif", Font.BOLD, 16)).getAttributes();
attributes.put(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON);
于 2012-09-12T13:28:06.467 に答える
0

これを必要なCSSで使用し、

yourLabel.setText(htmlIfy("<p style='color:#1C66AE;'>Your text here</p>"));

htmlIfy関数の場所

private static final String HTML = "<html>";
    private static final String HTML_END = "</html>";


public static String htmlIfy(String s) {
        return HTML.concat(s).concat(HTML_END);
    }

リンクの使用のようなテキストを追加するには

yourLabel.setText(HTMLTagUtil.htmlIfy(HTMLTagUtil
                .linkIfy("Your Text Here")));//Forgot Password?

        yourLabel.setCursor(new java.awt.Cursor(
                java.awt.Cursor.HAND_CURSOR));

linkIfy関数の場所

private static final String A_HREF = "<a href=\"";
    private static final String HREF_CLOSED = "\">";
    private static final String HREF_END = "</a>";
public static String linkIfy(String s) {
        return A_HREF.concat(s).concat(HREF_CLOSED).concat(s).concat(HREF_END);
    }
于 2012-09-12T13:23:52.863 に答える