2009-06-15 9 views
24

JLabelからのテキストの選択を有効にすることはできますか?そうでない場合は、使用するのに最適な代替コントロールは何ですか?また、JLabelのように表示するように設定する方法はありますか?JLabelからテキストを選択しますか?

答えて

1

JLabelsは編集できません。

しかし、JTextFieldを使用して、前景/背景の色を変更してJLabelとして表示することができます。本当に気に入ったのであれば、編集可能であることを示すように選択されたときに色を変更するコードを追加することができます。 f.setBorder(null);

と無効にしたテキストの色を設定します。

13

あなたはJTextFieldのを使用する場合は、ピエール

6

、あなたはまた、国境を削除したいと思うでしょう編集

JTextField f=new JTextField("Hello World"); 
f.setEditable(false); 
content.add(f); 

を有効にしないのJTextFieldを使用することができます:f.setDisabledTextColor(Color.black);

10

応答の建物: あなたは、私が(プログラム的に)あなたがそれを選択したときに「ジャンプ」からテキストを停止、またはテキストを交換する方法がわからない編集

JTextField f=new JTextField("Hello World"); 
f.setEditable(false); 
f.setBackground(null); //this is the same as a JLabel 
f.setBorder(null); //remove the border 

を有効にしないのJTextFieldを使用することができます。たぶん私のコンピュータなのかもしれません...

+0

f.setCaretPositionは(0)(0) '私のテストでは、 "ジャンプ" を防ぐことはできませんでしたsetCaretPositionが' @fredsmith選択 –

+0

上のテキストを 'ジャンプ' することは避けてください。これは: 'f.setMinimumSize((int)f.getPreferredSize()。getWidth()+ 1、(int)f.getPreferredSize()。getHeight()));' –

+0

これはhtmlのようには見えませんこの実装では有効になっています –

25

JTextFieldでは、JLabelのようなHTML形式のテキストは許可されていません。あなたが選択可能なHTMLテキストをしたい場合は、代わりにHTML形式に設定JTextPaneのを試みることができる:CopyableLabel以下の変形例として

JTextPane f = new JTextPane(); 
f.setContentType("text/html"); // let the text pane know this is what you want 
f.setText("<html>Hello World</html>"); // showing off 
f.setEditable(false); // as before 
f.setBackground(null); // this is the same as a JLabel 
f.setBorder(null); // remove the border 
+1

この投稿は、通常、JLabelに表示されるものと一致するようにフォントを取得するための有用な提案です。https://explodingpixels.wordpress.com/2008/10/28/make-jeditorpane-use-the -system-font/ –

+0

'setBackground(null);の代わりに' setOpaque(false); 'も使うことができます – user12458

+0

これは使い慣れているので、テキストにスタイルを追加することができます。私が嫌うのは、もはやSwingノーマルフォントを使用しないということだけです。 –

3

はJLabelのようなHTMLタグやフォントをサポートしています。

public class CopyableLabel extends JTextPane { 

    private static final long serialVersionUID = -1; 

    private static final Font DEFAULT_FONT; 

    static { 
     Font font = UIManager.getFont("Label.font"); 
     DEFAULT_FONT = (font != null) ? font: new Font("Tahoma", Font.PLAIN, 11); 
    } 

    public CopyableLabel() { 
     construct(); 
    } 

    private void construct() { 
     setContentType("text/html"); 

     setEditable(false); 
     setBackground(null); 
     setBorder(null); 

     putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, true); 
     setFont(DEFAULT_FONT); 
    } 
} 
関連する問題