自动调整JPanel的大小为50的倍数

时间:2015-07-20 18:25:06

标签: java swing layout

我需要设计一个界面,其中我有一个使用OutterPanel调整大小的InnerPanel。好吧,问题是我需要InnerPanel只调整50的倍数。

因此,如果OutterPanel具有50px,则InnerPanel具有50px。如果OutterPanel调整为80px,则InnerPanel的大小保持为50px。但是当OutterPanel的大小调整为110px时,InnerPanel会变为100px。

提前致谢!

编辑:正如所建议的那样,我发布了迄今为止我尝试过的问题...... 在OutterPanel的构造函数中,我添加了一个ComponentListener来调整InnerPanel的大小:

user=> (def foo (atom "my/path"))
#'user/foo
user=> @foo
"my/path"
user=> (reset! foo "my/new/path")
"my/new/path"
user=> @foo
"my/new/path"
user=>

Listener本身正在工作,问题是OutterPanel.getPreferredSize()。width,总是返回0。 出于某种原因,OutterPanel.getPreferredSize()。height返回实际高度。

如何检索OutterPanel宽度?什么是设置InnerPanel尺寸的最佳途径?

2 个答案:

答案 0 :(得分:2)

覆盖内部面板的getPreferredSize()方法。

可能是这样的:

@Override
public Dimension getPreferredSize()
{
    Dimension parentSize = getParent().getSize();
    int width = (parentSize.width / 50) * 50;
    int height = (parentSize.height / 50) * 50;
    return new Dimension(width, height);
}

答案 1 :(得分:1)

使用getSize(),而不是getPreferredSize()。调整外部面板的大小时,其大小会发生变化,但其首选大小不会改变。