[英]Java Swing - Get the size of the element some other element is enclosed in
就像标题所说的-说我在jScrollPane中包含了一个jPanel。 我如何从jPanel内部找到它所包含的jScrollPane的大小?
我觉得我应该可以轻松使用Google却很简单,但我还没有找到答案。
您可以调用Component的getParent() ,它将为您提供该组件的直接父级,然后您可以查询其尺寸。
这是一个示例,尽管公平地说,这是我在这里检查的首选大小。 如果您运行它,您将看到与您期望的一样,控制台上将显示“ 200.0”。
大概使用getWidth()也会获得实际的宽度,尽管这需要对Swing的内部工作有更多的了解才能确保,因为用户无法直接控制渲染面板的实际大小。
public class SomeJFrame extends JFrame {
public SomeJFrame() {
setLayout(new BorderLayout());
JPanel parent = new JPanel(new BorderLayout());
parent.setPreferredSize(new Dimension(200, 201));
JPanel child = new JPanel(new BorderLayout());
parent.add(child);
System.out.println(child.getParent().getPreferredSize().getWidth());
add(parent, BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new SomeJFrame();
}
});
}
}
寻找JScrollPane
围绕给定Component
是一个有点特殊,因为它的直接父实际上是一个JViewport
,而母公司JViewport
是JScrollPane
。
您可以通过使用SwingUtilities.getAncestorOfClass避免摆弄这些细节。
JScrollPane scrollPane = (JScrollPane) SwingUtilities.getAncestorOfClass(JScrollPane.class, comp);
Dimension size = scrollPane.getSize();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.