Как наложение, изменение размера и размера компонента на jpanel?

Я провел некоторое время, чтение и экспериментирую здесь, и придумать несколько подходов, но не получил ни одного из них, чтобы все еще не было, поэтому я хотел бы знать, что сделают более опытные программисты.

Главное окно моего приложения содержит пользовательский подтип jpanel, который используется для отображения изображения, рассчитанного по математической функции. Это может занять некоторое время для расчета, поэтому, в то время как это происходит, я показываю текстовое сообщение и панель прогресса, наложенного на середину панели. Я хотел бы как текст, так и панель прогресса соответственно изменять измерение, когда панель изменяется, вероятно, используя постоянную долю ширины панели.

На данный момент у меня есть еще один подтип JPanel, который содержит текст и панель прогресса, и я добавляю эту «панель прогресса» на главную панель и установите его, чтобы быть видимым при необходимости. Основная панель не содержит никаких других компонентов, но имеет свой собственный метод PaintComponent () для отображения буферизации, полученного из другого класса. Есть несколько проблем с этим, поскольку он стоит:

  • Панель прогресса не всегда видна, когда она должна быть, возможно, потому что в коде некуда нет, что явно гарантирует, что он окрашен перед изображением.
  • Панель прогресса всегда занимает полную ширину панели приложения. Он сосредоточен вертикально с помощью boxlayout на главной панели с некоторым вертикальным клеем до и после панели прогресса, но мне не удалось получить тот же трюк для работы горизонтально, и в любом случае предпочтительный горизонтальный размер панели прогресса не обязательно правильно. Один из подходов, который почти работает, - это использовать BorderLayout с горизонтальными и вертикальными стойками вокруг панели прогресса, но размер панели прогресса все еще не имеет права, а помехи должны быть изменены, когда главная панель изменяется.

Итак, что бы вы сделали?

  • Используйте другой менеджер макета на главной панели?
  • Используйте многослойное или овертайтеLayout как-то?
  • Добавьте дополнительный слой в иерархию содержания сдерживания, содержащую панель сведения и прогрес Панель?
  • Некоторые комбинации вышеперечисленного или чего-то еще?

Как насчет изменения изменения текста. Нужно ли явно создать новый шрифт, когда панель изменяется, или есть ли способ сделать это более автоматически? -

6
задан mKorbel 31 August 2011 в 12:30
поделиться