Я пытаюсь сделать что-то вроде ожидания / загрузки окна для процесса, который иногда может занять, например, 2 минуты или больше. Проблема в том, что установка (неблокирующего) модального набора в false
приводит к тому, что метка и кнопка не отображаются. А установка его в true
блокирует все приложение в ожидании взаимодействия с пользователем.
Я использую Java 17 (пробовал и с Zulu, и с Liberica).
private fun createWaitDialog(parent: JFrame): JDialog {
val dialog = JDialog(parent, "Reloading non-modal...", false) // childs are INVISIBLE
// val dialog = JDialog(parent, "Reloading modal", true) // childs are visible
dialog.layout = BorderLayout()
dialog.setSize(300, 200)
dialog.setLocationRelativeTo(parent)
val messageLabel = JLabel("Please wait", JLabel.CENTER)
val closeButton = JButton("Close")
closeButton.addActionListener { _: ActionEvent? -> dialog.dispose() }
val buttonPanel = JPanel()
buttonPanel.add(closeButton)
dialog.add(messageLabel, BorderLayout.EAST)
dialog.add(buttonPanel, BorderLayout.SOUTH)
// also tried with this:
// dialog.invalidate()
// dialog.validate()
// dialog.repaint()
// dialog.pack()
dialog.isVisible = true
return dialog
}
Ерофей
Вопрос задан12 апреля 2024 г.