基本上这就是我想要做的:
我在两个单独的 JScrollPanes 中有两个单独的 JTextArea,我想将它们组合起来,所以当第一个 TextArea 的文本太长时,它应该在第二个 TextArea 上继续。但它也应该与滚动一起使用:如果我滚动第一个 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,我只是定义约束来设置组件的大小,我认为这是固定组件比例的最佳方法,甚至调整窗口大小后。如果我在这里错了,请纠正我,经过数小时尝试各种 LayoutManagers (这些都是坏而丑陋的),我没有任何动机进一步考虑这个问题)。所以该getHeight()
方法一直返回0
,因为我从未设置大小。
是否有任何其他方法可以获取嵌套在 ScrollPane 中的 TextArea 的可见行?或者我在这里完全错了,应该以其他方式吗?
谢谢您的帮助。