繁体   English   中英

Java Swing-获取包含其他元素的元素的大小

[英]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 ,而母公司JViewportJScrollPane

您可以通过使用SwingUtilities.getAncestorOfClass避免摆弄这些细节。

JScrollPane scrollPane = (JScrollPane) SwingUtilities.getAncestorOfClass(JScrollPane.class, comp);
Dimension size = scrollPane.getSize();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM