我需要设计一个界面,其中我有一个使用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尺寸的最佳途径?
答案 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()
。调整外部面板的大小时,其大小会发生变化,但其首选大小不会改变。