如何在JPanel上叠加,调整大小和居中组件?

Ben*_*Ben 6 java swing font-size jpanel layout-manager

我花了一些时间在这里阅读和试验,并提出了一些方法,但还没有完成任何工作,所以我想知道更多有经验的Swing程序员会做什么.

我的应用程序的主窗口包含JPanel的自定义子类型,用于显示从数学函数计算的图像.这可能需要一些时间来计算,所以当发生这种情况时,我会在面板中间显示一条文本消息和一个进度条.我希望文本和进度条在调整面板大小时适当调整大小,可能使用面板宽度的恒定分数.

目前我有另一个包含文本和进度条的JPanel子类型,我将这个"进度面板"添加到主面板,并将其设置为在需要时可见.主面板不包含任何其他组件,但有自己的paintComponent()方法来显示从另一个类获取的BufferedImage.这有一些问题,因为它代表:

  • 进度面板在应该的时候并不总是可见,可能是因为代码中没有任何地方明确地确保它被绘制在图像的前面.
  • 进度面板始终占用应用程序面板的整个宽度.它使用主面板中的BoxLayout垂直居中,并在进度面板之前和之后使用一些垂直胶水,但我没有设法让水平工作的相同技巧,并且在任何情况下,进度面板的首选水平尺寸是不一定是对的.一种几乎可行的方法是在进度面板周围使用带有水平和垂直支柱的BorderLayout,但进度面板的大小仍然不正确,并且在调整主面板大小时需要更改支柱.

那你会怎么做?

  • 在主面板中使用不同的布局管理器?
  • 不知何故使用LayeredPane或OverlayLayout?
  • 将另一个图层添加到包含图像面板和进度面板的包含层次结构中?
  • 上面的一些组合,或其他什么?

如何调整文本大小.我是否需要在调整面板大小时显式创建新的字体,或者是否有任何方法可以更自动地执行此操作? -

Cat*_*and 2

我知道这是一个布局问题,但SwingWorker如果您有有用的临时结果,可能会使问题变得更简单。我有时会从这个例子开始。