0

私はスイングでデモを作成しましたが、テキストエリアに全文を表示したいと考えています。2 つのテキストエリアをスクロール バーに追加して、スクロール バー内にすべてのコンポーネントを表示したいと考えています。そのためには、パネルを作成し、このパネルに 2 つのテキストエリアを追加してから、このパネルをスクロール バーに追加します。デモを実行すると正しく表示され、ウィンドウのサイズを大きくしても正しく表示されますが、小さい画面のサイズを変更すると問題が発生します。画面のサイズを小さく変更しても、テキストは折り返されません (水平スクロール バーが表示される代わりに)。画面のサイズを小さくすると、自動的に折り返されます。

ここに私のコード: JPanel gui = new JPanel(new GridLayout()); gui.setBorder(新しい EmptyBorder(2, 3, 2, 3));

 JTextArea area = new JTextArea("JTextArea on JPanel inside JScrollPane does not resize properly");
 area.setWrapStyleWord(true);
 area.setLineWrap(true);
 gui.add(area);

 JTextArea area1 = new JTextArea("JTextArea on JPanel inside JScrollPane does not resize properly");
 area1.setWrapStyleWord(true);
 area1.setLineWrap(true);
 gui.add(area1);

 gui.setBackground(Color.WHITE);

 JScrollPane scroller = new JScrollPane(gui);
 //scroller.setBorder(new EmptyBorder(2, 3, 2, 3));
 JFrame f = new JFrame("Big Text Fields");
 f.add(scroller,BorderLayout.CENTER);
 // Ensures JVM closes after frame(s) closed and
 // all non-daemon threads are finished
 f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
 // See http://stackoverflow.com/a/7143398/418556 for demo.
 f.setLocationByPlatform(true);

 // ensures the frame is the minimum size it needs to be
 // in order display the components within it
 f.pack();
 // should be done last, to avoid flickering, moving,
 // resizing artifacts.
 f.setVisible(true);
4

1 に答える 1

0

スクロール ペインを省略して、テキスト エリアをコンテナの直接の子にするだけです。

JTextArea は、含まれるテキストに基づいて優先サイズを変更します。ドキュメントから:

java.awt.TextArea には、適切なサイズを決定するために使用される行と列の 2 つのプロパティがあります。JTextArea はこれらのプロパティを使用して、java.awt.TextArea によって提供される機能と一致するように JScrollPane 内に配置されたときにビューポートの推奨サイズを示します。JTextArea には、すべてのテキストを表示するために必要な推奨サイズがあるため、JScrollPane 内で適切に機能します。行または列の値がゼロに等しい場合、その軸に沿った優先サイズが、同じ軸に沿ったビューポートの優先サイズに使用されます。

于 2013-05-22T08:22:47.163 に答える