我需要设计一个接口,在其中我可以使用一个与OutterPanel一起调整大小的InnerPanel。好的,问题是我需要InnerPanel仅以50的倍数调整大小。

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

提前致谢!



编辑:按照建议,我发布了到目前为止我已经尝试过的问题...
在OutterPanel的构造函数中,我添加了ComponentListener来调整InnerPanel的大小:

JPanel OutterPanel = this;

this.addComponentListener(new ComponentAdapter() {
    @Override
    public void componentResized(ComponentEvent e) {
        contentArea.setPreferredSize(new Dimension(OutterPanel.getPreferredSize().width, 500));
    }
});


侦听器本身正在运行,问题在于OutterPanel.getPreferredSize()。width始终返回0。
由于某些原因,OutterPanel.getPreferredSize()。height返回实际高度。

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

最佳答案

覆盖内部面板的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);
}

10-05 19:40