jtextareaを設定する方法に含まれるテキストのサイズに一致する高さを持つ方法(スクロールバーを避けるため)
-
28-09-2019 - |
質問
この問題は些細なように見えますが、解決策は見つかりません。
フォームを作成すると、aが含まれます JTextArea
. 。大きな一定のテキストを入れたいです。テキストが1000行の長さと言っている場合、私は私のものが欲しい JTextArea
1000行の高さになると(スクロールバーなしでテキスト全体を表示するのに十分な大きさ)。 JTextArea
スクロールバーを持つことができるパネルの内側にあるので、大きすぎると問題はありません(2つあります JTextArea
そのパネルで.. diffツールのようなもの)。誰かがこれを達成するにはどうすればよいですか?ありがとう。
解決
BorderLayout
あなたが単にあなたを置くならば、箱からスクロールバーを処理します JTextArea
で JScrollPane
あなたがそれをあなたに追加する前に 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」以外のレイアウトマネージャーを使用することはありません。そのため、他のレイアウトマネージャーがどのように動作するかはわかりません。