我有一些代码,生成的JPanel需要在Mac OSX和Windows环境中运行。我想绘制一系列构成JPanel显示区域的矩形。但是,JPanel的显示区域在两种环境中有所不同。在下图中,Mac JPanel位于左侧,Windows JPanel位于右侧。
是否有一个属性引用了JPanel的显示区域而不是其大小?
图中的两个JPanel使用相同的代码制作。在这两种情况下,我都有以下命令:
setSize(400, 400);
并且在paintComponent的覆盖中,最外面的矩形(在垂直方向和垂直方向都被切掉,但仅在水平方向的Windows中被切掉)如下:
g2.drawRect(0, 0, 399, 399);
(内部矩形以4像素的增量移动并交替显示颜色。这并不是我希望绘制的,但它说明了问题。)
我可以手动确定所需的调整,并为两个环境创建单独的常量,但是我想知道在Swing中是否缺少可以获取给定JPanel的显示尺寸的东西。如果存在这样的功能或属性,则使用它会更清洁,更灵活,并且可以对JPanels进行套期保值,使其具有不同的标题栏大小或填充设置。
答案 0 :(得分:2)
在面板的paintComponent()
方法中,使用:
int width = getWidth();
int height = getHeight();
每当重新绘制组件时,这将为您提供面板的当前大小。