我正在尝试这样做:

public class DialogMenuHawaii extends Dialog {

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

但这行不通。

有帮助吗?

解决方案

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

  1. 在“未选择”标签下打开 DialogContentPane 样式,如果您没有一个创建,它会查看有关如何做的答案的结尾?
  2. 在“未选择”标签下打开 对话框 样式,如果您没有一个人创建它,请查看该答案的结尾,并将背景透明度设置为'0'并确保背景图像类型是 没有任何

笔记: :上面的代码将反映您应用程序中的所有对话框。如果您想要具有背景图像的特定对话框,而不是从这些默认样式中获取新样式,并按照上述步骤将其应用于您的 Dialogmenuhawaii 或任何运行时 对话.

如何: 我建议您浏览Shai的博客文章 LWUIT资源编辑教程第1部分 直到第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();
    }
}

其他提示

首先,我建议您使用 主题. 。我们不断地更改小型实施详细信息,例如您正在执行的定制详细信息,将不会在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");
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top