Как получить размеры видимой части окна на основе JScrollPane

этой JScrollPane окно на основе является верхней частью JSplitPane.

getBounds(), getWidth(), getHeight() все возвращают полный размер окна, включая невидимую (прокручиваемую) часть.

Я хочу знать размеры только видимой части.

3 ответов


Это пример, который печатает высоту и ширину видимая часть только ,

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;

public class TestWidth {

    public static void main(String[] args) {

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JTextPane newsTextPane = new JTextPane();
        newsTextPane.setEditable(false);

        JScrollPane scrollPane = new JScrollPane(newsTextPane);

        frame.add(scrollPane);
        frame.setSize(300, 250);
        frame.setVisible(true);

        System.out.println("Height : " + scrollPane.getViewport().getSize().height + "\nWidth :" + scrollPane.getViewport().getSize().width);
    }
}

вы посмотрите на JViewport, вы можете вывести JViewport от JScrollPane


Я думаю, что вы ищете JComponent#getVisibleRect ().

возвращает Component"видимый прямоугольник" - пересечение видимого прямоугольника этого компонента,new Rectangle(0, 0, getWidth(), getHeight()), и все видимые прямоугольники его предков.