У меня есть Java Swing Dialog с скрытый JLabel над каждым входным компонентом (то есть JTextField). Цель этого скрытого JLabel - использовать его как результат проверки для его входного компонента.Java Swing - изменение размера Диалог на JLabel.setVisible (...)
Скажем, есть поле ввода для описания какой-либо сущности, которая должна быть не пустой, и должна содержать некоторые специальные материалы. В случае ошибки, действие может вызвать следующий метод:
private void invalidateDescription(String errMessage) {
errDescriptionLabel.setText(errMessage);
errDescriptionLabel.setVisible(true);
descriptionTextField.setBackground(ERR_COLOR);
}
После этого, я называю pack()
и invalidate()
Проблема заключается в том, что JDialog по-прежнему имеет тот же размер по вертикали, так что некоторые из компонентов, (кнопки в нижней части диалогового окна) исчезают (потому что они не видны).
У вас есть предложение исправить это?
С наилучшими пожеланиями.
Редактировать: Я не хотел упоминать, что JDialog имеет макет «Free Design» (по умолчанию NetBeans GUI Builder). edit 2: Я ищу решение, которое не требует типа заполнителя для (ошибки) JLabel. «Пустое пространство» не является желательным решением, потому что диалог не выглядит сбалансированным.
Для лучшего ответа потребуется гораздо больше контекста относительно стратегии проверки вашей программы. Рассматривали ли вы добавление панели состояния в макет или с помощью 'InputVerifier'? – trashgod
Swing не делает много скрытых компонентов хорошо. Один из вариантов - иметь один JLabel в верхней части нижней части для всех ваших сообщений об ошибках, хотя вы можете отображать только одно сообщение об ошибке за раз. Другая альтернатива - иметь 3-х столбчатую форму, где третий столбец зарезервирован для сообщений об ошибках. –