jtextareaを設定する方法に含まれるテキストのサイズに一致する高さを持つ方法(スクロールバーを避けるため)

StackOverflow https://stackoverflow.com/questions/3081210

質問

この問題は些細なように見えますが、解決策は見つかりません。

フォームを作成すると、aが含まれます JTextArea. 。大きな一定のテキストを入れたいです。テキストが1000行の長さと言っている場合、私は私のものが欲しい JTextArea 1000行の高さになると(スクロールバーなしでテキスト全体を表示するのに十分な大きさ)。 JTextArea スクロールバーを持つことができるパネルの内側にあるので、大きすぎると問題はありません(2つあります JTextArea そのパネルで.. diffツールのようなもの)。誰かがこれを達成するにはどうすればよいですか?ありがとう。

役に立ちましたか?

解決

BorderLayout あなたが単にあなたを置くならば、箱からスクロールバーを処理します JTextAreaJScrollPane あなたがそれをあなたに追加する前に JPanel. FlowLayout, 、一方で、そうではありません。 @xortyの親密なように、あなたが呼び出す限り、それはスクロールバーを表示しません setPreferedSize() あなたに JScrollPane そして、あなたが望む次元を与えてください。

他のヒント

このようなものを使用することもできます(テキストに応じて幅が限られている、高さ、情報メッセージを表示するときに役立つ):

  public JTextArea createTextAreaFitToText(String message, Dimension minimalSize){

        JTextArea aMessagePanel = new JTextArea();
        aMessagePanel.setText(message);

        /*for modelToView to work, the text area has to be sized. It doesn't matter if it's visible or not.*/
        aMessagePanel.setPreferredSize(minimalSize);
        aMessagePanel.setSize(minimalSize);            

        Rectangle r = aMessagePanel.modelToView(aMessagePanel.getDocument().getLength()); 

        Dimension d = new Dimension(minimalSize.width, r.y + r.height);
        aMessagePanel.setPreferredSize(d);
        return aMessagePanel;

}

JTextareaの高さを増加または減少させる。テキストが入力されたら、jtextarea-のgetPreferredSize()を呼び出します。テキスト全体を表示するために必要なサイズが表示されます。その後、jScrollpaneのsetPrefferedSize()を使用して、jtextareaのサイズを設定します

まあ、まず第一に:それはjtextareaではなくjtextareaです。

今 - jtextareaをjscrollpaneに入れます。テキストが入力されたら、電話してください getPreferedSize() JScrollpaneの - それは、テキスト全体を表示するために必要な正確なサイズを提供します。また、NetBeans Swing Builderの「Free Design」以外のレイアウトマネージャーを使用することはありません。そのため、他のレイアウトマネージャーがどのように動作するかはわかりません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top