- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个从 JFrame 扩展的类。在其构造函数中,我生成一个 JPanel:
JPanel contentPane = new JPanel();
contentPane.setBackground(Color.BLACK);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JOptionPane.showMessageDialog(contentPane, contentPane.getBounds());
我认为使用 setContentPane,我可以填充 JFrame 中的整个可用空间。所以它会自动设置 JPanel 的边界。
我需要获取 JPanel 的边界,但 getBounds() 返回 x = 0, y = 0, width = 0, height = 0。JPanel 的其他与大小相关的方法(如 getWidth() 等)也返回 0。如果我显式设置 JPanel 的 Bounds(),这些方法将返回我给定的值。
令人好奇的是,setBackground 填充了我的 JFrame 中的整个可用空间。因此,我的 JPanel 的大小必须与我的 JFrame 的大小完全相同。但似乎并非如此。
也许这个问题是由布局管理器引起的,就像大多数与容器相关的问题一样。但是使用布局管理器,我也得到 0。
我认为这是一个非常愚蠢的问题,很容易解决,但我无法弄清楚问题所在。我在网上没有找到这个问题的答案,所以希望没有重复一些帖子。
最佳答案
The curious thing about that is, that the setBackground fills the whole available space in my JFrame. So, the size of my JPanel must be exactly the size of my JFrame. But it doesn´t seem so.
实际上不会,内容 Pane 将比框架小,因为它包含在框架装饰内。这意味着可视空间就是 window 的大小 - 装饰品的大小。
此外,组件在其大小超过 0x0 之前不会被绘制
在 contentPane
知道它有多大之前,它需要由其父容器进行布局。为了让父容器布置子容器,它需要知道它们可能想要的大小。
正如你所说,这与布局管理器有关,为了让容器知道它可以有多大,它需要知道它的父容器会给它多少空间。
Maybe this problem is caused by the layout manager, like most Container-related problems. But with a layout manager, I also get 0.
即使在布局管理器的管理下,容器也不会被分配大小,直到父容器的大小适当为止。
虽然有多种方法可以克服这个问题,但问题是为什么?您将 contentPane 的布局管理器设置为 null 的事实令人担忧,并且表明您现在需要重新发明轮子并替换布局管理器为您所做的工作。
我建议在尝试获取组件大小之前调用 pack
,但是,由于您已经否定了布局管理器,这不会产生您满意的值...
关于java - JPanel.getBounds() 意外返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28651519/
在阅读关于多边形的 Java 文档时,我发现有一个 getBounds方法和 getBounds2D方法。注意到第一个不如第二个准确。 我想知道“不太准确”到底是什么意思?是否getBounds返回一
我正在尝试让 getBounds() 工作。 当我有这个代码时: google.maps.event.addListener(map, 'bounds_changed', createMarkerBu
编辑:我的问题实际上与此重复: google maps v3: center of bounds is different from center of the map 我尝试提取谷歌地图边界的中心点
我从 geoJson 中提取了一个要素图层,然后同步了一个表格。当我放大每个功能时,我试图做到这一点,它将表格过滤到这些功能。以下是我的脚本不起作用。我在 'if (map.getBounds().c
我有一个带有 JPanel 的简单应用程序和一个计时器,用于打印每一帧面板的大小和位置。 import java.awt.Point; import java.awt.Rectangle; impor
我正在尝试获取动态添加到 map 的标记的边界。我的目标是动态地将标记添加到 map 中,并使 View 自动缩放以适合 map 上所有标记的边界。以下是我当前的代码以及我迄今为止尝试过的内容: 起点
我有这段javascript代码 var myOptions = { zoom:9, mapTypeId: google.maps.MapTypeId.ROAD
photo = (ImageView) findViewById(R.id.image1); photo.setImageBitmap(pic); Drawable draw
我在这里关注答案:How get a string width in Libgdx? 我遇到的问题是 getBounds 似乎没有返回正确的宽度。我下面的代码应该在字符串末尾放置点,但是您可以看到一些
var map; function initialize(location) { var currentPosition = new google.maps.LatLng(14.457264, 121
我试过map.fitBounds(geojsonFeature.getBounds());我得到这个错误: geojsonFeature.getBounds() is not a function.
下面是我的代码。我已添加 google.maps.event.addListenerOnce 但仍然收到此错误。不知道如何解决。谢谢。 “未捕获类型错误:无法读取未定义的属性“getBounds””
我是Flash和ActionScript的新手,但管理起来很好。阻碍我前进的一件事是width的height和DisplayObject(Container)属性。我终于开始了解他们,并了解到Spri
我有一个从 JFrame 扩展的类。在其构造函数中,我生成一个 JPanel: JPanel contentPane = new JPanel(); contentPane.setBa
我希望检测到标记并显示分配给矩形的值。通过研究,我发现this , 但它不适用于我的情况,因为我只需要一个 latlong 点。我找到了与我想要的类似的东西并尝试了一下,它是 here 但它似乎对我的
而不是整个窗口都带有关闭、最大化和最小化按钮以及边框? 我正在尝试保存客户区的屏幕截图...maximizedBounds 使应用程序崩溃... 最佳答案 改为获取内容 Pane 的边界(即 JFra
我有: const map = L.map("mapid", {preferCanvas: true}); //.... const circle = L.circle([47.6652642,
EDIT2:似乎创建大数字是因为动画片段不包含任何 bipmap 数据,但我还不确定,但我真正的错误是我只是忘记了一个“getBounds”前面的“this”...项目规模太大,我找不到错误 =) 编
我想以 4 个 float 的列表形式获取 map 边界的坐标(即纬度/经度坐标中的两个点)。 这个(Google map 未记录的功能)直到几天前还可以工作: var b = map.getBoun
我正在尝试使用 STArray 编写 Fisher-Yates 洗牌算法。与我在网上找到的所有其他示例不同,我试图避免使用 native 列表。我只想就地洗牌数组。 这就是我所拥有的: randShu
我是一名优秀的程序员,十分优秀!