基本的にこれは私がやりたいことです:
2 つの別個の JScrollPanes に 2 つの別個の JTextAreas があり、それらを結合したいので、テキストが最初の TextArea を長くする場合は、2 番目の TextArea で継続する必要があります。ただし、スクロールでも機能するはずです。最初のTextAreaをスクロールすると、2番目のTextAreaも一緒にスクロールする必要があります(逆も同様です)。表示可能な最大行数を計算して、表示される行数を確認しようとしました。私はこれを見つけました:
public void paint(Graphics g) {
super.paint(g);
final FontMetrics fontMetrics = g.getFontMetrics();
// get width of any char (font is monospaced)
final int charWidth = fontMetrics.charWidth('M');
final int charHeight = fontMetrics.getHeight();
final int prefWidth = this.getPreferredSize().width;
// get height of Parent (JScrollPane)
final int prefHeight = this.getParent().getHeight();
int maxChars = prefWidth/charWidth;
int maxLines = prefHeight/charHeight;
}
しかし、getParent().getHeight()
LayoutManager(SpringLayout)でコンポーネントのサイズを設定し、コンポーネントのサイズを設定するための制約を定義するだけなので、メソッドは機能していません。これは、コンポーネントの比率を固定するための最良の方法だと思います。ウィンドウのサイズを変更した後ここで間違っている場合は修正してください。したがって、サイズを設定したことがないため、getHeight()
メソッドは0
常に返されます。
ScrollPane にネストされた TextArea の表示される行を取得する他のメソッドはありますか? それとも私はここで完全に間違っていますか?
助けてくれてありがとう。