В основном это то, что я хочу сделать:
У меня есть две отдельные JTextAreas в двух отдельных JScrollPanes, и я хочу объединить их, поэтому, когда текст должен быть длинным для первой 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, и я просто определяю ограничения, чтобы установить размер компонентов,Я считаю, что это лучший способ иметь фиксированные пропорции компонентов, даже после изменения размера окна. Поправьте меня, если я ошибаюсь, после нескольких часов попыток различных менеджеров LayoutManager (которые все плохие и уродливые), у меня нетлюбая мотивация думать об этом дальше).Таким образом, метод getHeight()
возвращает 0
все время, потому что я никогда не устанавливал размер.
Существуют ли другие методы для получения видимых строк TextArea, вложенных в ScrollPane?Или я здесь совершенно не прав и должен ли он быть другим?
Спасибо за помощь.