5

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

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

4

4 に答える 4

5

に追加する前にBorderLayout単にあなたを入れれば、は箱から出してスクロールバーを処理します。 一方、そうではありません。@Xortyが親密なように、あなたがあなたを呼び出してあなたが望む寸法を与えない限り、それはスクロールバーを表示しません。JTextAreaJScrollPaneJPanelFlowLayoutsetPreferedSize()JScrollPane

于 2010-06-20T23:54:22.453 に答える
4

次のようなものを使用することもできます(テキストに応じて幅、高さを制限し、情報メッセージを表示するときに便利です)。

  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;

}
于 2010-06-21T14:38:27.760 に答える
1

JTextAreaの高さを増減します。テキストを入力したら、JTextAreaのgetPreferredSize()を呼び出します。これにより、テキスト全体を表示するために必要なサイズが得られます。その後、JScrollPaneのsetPrefferedSize()を使用してJTextAreaのサイズを設定します

于 2013-02-23T08:59:28.450 に答える
0

まず第一に、それはjTextAreaではなくJTextAreaです。

今-JTextAreaをJScrollPaneに入れます。テキストを入力したら、getPreferedSize()JScrollPaneを呼び出します。テキスト全体を表示するために必要な正確なサイズが表示されます。また、NetBeans Swing Builderの「FreeDesign」以外のLayoutManagerを使用することはありません。そのため、他のLayoutManagerがそこでどのように動作するかわかりません。

于 2010-06-20T23:03:43.233 に答える