我花了一些时间阅读和实验,想出了几种方法,但是还没有完全解决问题,因此我想知道更有经验的Swing程序员会怎么做。
我的应用程序主窗口包含一个自定义的JPanel子类型,用于显示从数学函数计算出的图像。这可能需要一些时间来计算,因此在此期间,我会显示一个文本消息和一个进度条,覆盖在面板的中间。当面板调整大小时,我希望文本和进度条都能适当地调整大小,可能使用面板宽度的恒定分数。
目前,我有另一个JPanel子类型,其中包含文本和进度条,并将此“进度面板”添加到主面板中,并在需要时设置为可见。主面板不包含任何其他组件,但具有其自己的paintComponent()方法,以显示从另一个类获取的BufferedImage。目前存在一些问题:
- 进度面板并不总是在应该时可见,可能是因为代码中没有明确确保它在图像前面绘制。
- 进度面板始终占用应用程序面板的全部宽度。它在主面板中使用BoxLayout垂直居中,并在进度面板之前和之后添加了一些垂直glue,但我无法让相同的技巧在水平方向上起作用,并且无论如何,进度面板的首选水平大小不一定正确。几乎可以工作的一种方法是使用BorderLayout,在进度面板周围使用水平和垂直支架,但进度面板的大小仍然不正确,并且需要在调整主面板大小时更改支架。
那么你会怎么做呢?
- 在主面板中使用不同的布局管理器?
- 以某种方式使用LayeredPane或OverlayLayout?
- 添加一个包含图像面板和进度面板的进一步层次结构?
- 上述方法的组合或其他方法?
调整文本大小怎么办?当面板调整大小时,我需要明确创建一个新字体吗,还是有其他自动完成此操作的方法? -