JavaSwing—获取其他元素所包含的元素的大小
正如标题所说——假设我有一个jPanel,它包含在一个jScrollPane中。如何从jPanel内部找到它所包含的jScrollPane的大小 这是一个相当简单的问题,我觉得我应该可以轻松地用谷歌搜索,但我还没有找到答案。你可以打电话给它,它会给你这个组件的直接父级,然后你可以查询它的维度 这里有一个例子,虽然公平地说,这是我在这里检查的首选尺寸。如果您运行它,您将看到“200.0”被打印到控制台,正如您所期望的那样 可能使用getWidth()也会得到实际的宽度,尽管这需要更多地了解Swing的内部工作以确保,因为用户无法直接控制渲染面板的实际大小JavaSwing—获取其他元素所包含的元素的大小,java,swing,user-interface,Java,Swing,User Interface,正如标题所说——假设我有一个jPanel,它包含在一个jScrollPane中。如何从jPanel内部找到它所包含的jScrollPane的大小 这是一个相当简单的问题,我觉得我应该可以轻松地用谷歌搜索,但我还没有找到答案。你可以打电话给它,它会给你这个组件的直接父级,然后你可以查询它的维度 这里有一个例子,虽然公平地说,这是我在这里检查的首选尺寸。如果您运行它,您将看到“200.0”被打印到控制台,正如您所期望的那样 可能使用getWidth()也会得到实际的宽度,尽管这需要更多地了解Swin
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();
}
});
}
}
您可以调用它,它将为您提供此组件的直接父级,然后您可以查询其维度
这里有一个例子,虽然公平地说,这是我在这里检查的首选尺寸。如果您运行它,您将看到“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
有点特殊,
因为它的直接父对象实际上是一个JViewport
,
而JViewport
的父对象是JScrollPane
您可以通过使用
在给定的组件周围查找JScrollPane
有点特殊,
因为它的直接父对象实际上是一个JViewport
,
而JViewport
的父对象是JScrollPane
您可以通过使用
是的,成功了!在发布这个问题之前,我曾一度使用过getParent(),但出于某种原因,我认为它没有达到我认为的效果。。。哦,好吧!谢谢是的,成功了!在发布这个问题之前,我曾一度使用过getParent(),但出于某种原因,我认为它没有达到我认为的效果。。。哦,好吧!谢谢