Как установить фоновое изображение для диалога?
-
25-10-2019 - |
Вопрос
Я пытаюсь сделать это:
public class DialogMenuHawaii extends Dialog {
Style s = UiFactory.getBaseStyle();
s.setBgTransparency(0);
s.setBgImage( <my image >);
this.setUnselectedStyle(s);
}
Но это не работает.
Решение
Откройте свой файл '.res' в редакторе ресурсов и выберите свою предпочтительную тему,
- В разделе «Невыбранная» вкладка открыть DialogContentPane Стиль, если у вас нет ни одного, создайте его, посмотрите на конец этого ответа о том, как это сделать?, И установите фоновое изображение на изображение, которое вам нужно показать как диалог bg
- В разделе «Невыбранная» вкладка открыть Диалог тела Стиль, если у вас нет ни одного, создайте его, посмотрите на конец этого ответа о том, как это сделать?, И установите фон прозрачность как '0', а также убедитесь, что тип фонового изображения НИКТО
ПРИМЕЧАНИЕ: Приведенный выше код будет отражать для всех диалогов в вашем приложении. Если вам нужен конкретный диалог с фоновым изображением, чем вывести новые стили из этих стилей по умолчанию, и выполните вышеуказанные шаги, чтобы применить его к вашим Dialogmenuhawaii или любое время выполнения Диалоги.
КАК: Я бы порекомендовал вам пройти через сообщения в блоге Shai Редактор ресурсов Lwuit До 10., чтобы лучше понять редактор Resouce его функции и возможности.
:
:
:
PS: Программно-осторожно Textarea Что имеет место для диалога по умолчанию. Если вы замените компонент корпуса диалога на Этикетка Если работает нормально, образец кода приведен ниже. Я не сильно углубился в то, почему это так? Может быть, сделаю это в свободное время. Следовательно, я предложил рабочее альтернативное решение, которое написано выше с использованием редактора ресурсов и ниже, используя код
class MyDialog extends Dialog {
public void show() {
Container octnPane = this.getDialogComponent();
octnPane.getUnselectedStyle().setBgTransparency(0, false);
Container ctnPane = (Container)((BorderLayout)octnPane.getLayout()).getCenter();
ctnPane.getUnselectedStyle().setBackgroundType(Style.BACKGROUND_IMAGE_SCALED, false);
ctnPane.getUnselectedStyle().setBgImage(myImage, false);
Label t = new Label("Dialog");
t.setUIID("DialogBody");
t.getUnselectedStyle().setBgTransparency(0, false);
ctnPane.addComponent(t);
super.show();
}
}
Другие советы
Во -первых, я предлагаю вам использовать тема. Анкет Мы постоянно меняем небольшие детали реализации, например, настройки, подобные тем, которые вы делаете, не будут портативными между LWIUT 1.4 и 1,5. Нет никаких причин не использовать тему для чего -то подобного.
Если вы заинтересованы в боли и страданиях логики вручную кодирования в вашем приложении, вы можете использовать несколько методов, таких как getDialogComponent()
Чтобы получить стиль от них и манипулировать этим. Диалог - это сложный зверь из -за того, что это действительно форма, подходящая от краев.
Это для диалогового фона.
Dialog dialog = new Dialog();
dialog.getDialogStyle().setBgImage(Image.createImage("/image/image.png"));
Если вы хотите установить прозрачность диалога с изображением.
dialog.getStyle().setBgImage(Image.createImage("/image/image.png");