0

JTextFieldのように見えるコンポーネント(同じ境界線、影、丸みを帯びた角など)を作成する必要がありますが、テキスト付きのグラフィックを表示するためのものです。

JTextFieldのレンダラーのようなものを作成することは可能ですか?またはJPanelに基づいてカスタムコンポーネントを作成しますが、JTextFieldと同じように表示するように強制する方法

もう1つの厄介な問題は、アプリケーションがその場で変更されたさまざまなLAFで実行されることです。

あなたはなにか考えはありますか ?

4

2 に答える 2

8

スタイル付きテキスト (埋め込みアイコン付き) を処理できるJTextPaneまたはを使用します。JEditorPane詳細については、エディタ ペインとテキスト ペインの使用方法を参照してください。

リッチ テキスト ドキュメントに埋め込まれた画像


アップデート

JTextPane または JEditorPane を使用すると、境界線のシェーディングとコンポーネントが変更されます。

本当に?この次のスクリーンショットは 3 つすべてを示しています。

これらを区別する

(コードを最初に見て不正行為はありません。)

PLAFに関しては。それらの間に目に見える違いがある PLAF を見せてください。

import java.awt.*;
import javax.swing.*;

class DistinguishThese {

    public void initGui() {
        JPanel gui = new JPanel(new GridLayout(3,0,2,2));

        gui.add(new JTextField(5));
        gui.add(new JScrollPane(new JEditorPane()));
        gui.add(new JScrollPane(new JTextPane()));

        JOptionPane.showMessageDialog(null, gui);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater( new Runnable() {
            public void run() {
                DistinguishThese dt = new DistinguishThese();
                dt.initGui();
            }
        });
    }
}
于 2012-01-17T14:34:05.000 に答える
3

いいえ、Swing は、その上に構築できる DefaultTextFieldRenderer または TextFieldRendere インターフェースを提供しません。あなたは、L&F を意識したレンダリングが好きだと言いました。それはすでに答えの一部です: グラフィックスをTextField にレンダリングするには、L&F ごとに UI を実装する必要があります。使用したい場合があります (選択肢を残した場合)。

推測させてください。フィールドにある種のステータス/検証アイコンを表示する必要があります。次善の策を講じて、それを TextField 自体ではなく、フィールドの横にアイコンとして表示します。はるかに少ないトラブル:)

于 2012-01-17T14:49:23.237 に答える