如何设置Dialog的背景图像?

时间:2011-11-29 15:08:55

标签: java-me lwuit lwuit-form lwuit-dialog

我正在尝试这样做:

public class DialogMenuHawaii extends Dialog {

    Style s = UiFactory.getBaseStyle();
    s.setBgTransparency(0);
    s.setBgImage( <my image >);
    this.setUnselectedStyle(s);
}

但它不起作用。

3 个答案:

答案 0 :(得分:2)

首先,我建议您使用主题。我们不断改变小的实施细节,例您正在进行的自定义操作将无法在LWUIT 1.4和1.5之间移植。没有任何理由不使用这样的主题。

如果您对将视图逻辑手动编码到应用程序中的痛苦和痛苦感兴趣,可以使用多种方法(如getDialogComponent())从中获取样式并对其进行操作。 Dialog是一个复杂的野兽,因为它实际上是一个远离边缘填充的形状。

答案 1 :(得分:1)

在资源编辑器中打开'.res'文件,然后选择首选主题

  1. 在“未选中”标签下打开 DialogContentPane 样式,如果您还没有创建它,请查看本答案的结尾,如何操作?并将背景图像设置为您需要显示为Dialog bg的图像
  2. 在“未选中”标签下打开 DialogBody 样式,如果您还没有创建它,请查看本答案的结尾,如何操作?并将背景透明度设置为' 0 '并确保背景图片类型
  3. 注意:上面的代码将反映应用程序中的所有对话框。如果您想要一个带背景图像的特定对话框而不是从这些默认样式派生新样式,并按照上述步骤将其应用于 DialogMenuHawaii 或任何运行时对话框

    如何:我建议您浏览Shai的博客文章LWUIT Resource Editor Tutorial Part 1,直至第10部分。更好地了解资源编辑器的功能和特性。

    PS:程序化我无法使用 TextArea 来实现它,这是默认Dialog的情况。如果用标签替换对话框主体组件,如果工作正常,则代码示例如下所示。我没有深入研究为什么会如此?也许会在我的空闲时间做这件事。因此,我提出了一个工作替代解决方案,使用资源编辑器在上面编写脚本,使用代码

    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();
        }
    }
    

答案 2 :(得分:0)

这是对话背景。

Dialog dialog = new Dialog();
dialog.getDialogStyle().setBgImage(Image.createImage("/image/image.png"));

如果要设置Dialog与图像的透明度。

dialog.getStyle().setBgImage(Image.createImage("/image/image.png");