2

我正在尝试这样做:

public class DialogMenuHawaii extends Dialog {

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

但它不起作用。

4

3 回答 3

2

首先,我建议你使用一个主题。我们不断更改小的实现细节,例如,像您正在做的自定义将无法在 LWUIT 1.4 和 1.5 之间移植。没有任何理由不为这样的事情使用主题。

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

于 2011-12-01T06:38:10.137 回答
1

在资源编辑器中打开您的“.res”文件并选择您喜欢的主题,

  1. 在“未选择”选项卡下打开DialogContentPane样式,如果您没有创建它,请查看此答案的末尾如何做?,并将背景图像设置为您需要显示为 Dialog bg 的图像
  2. 在“未选择”选项卡下打开DialogBody样式,如果您没有创建它,请查看此答案的末尾如何做?,并将背景透明度设置为“ 0 ”并确保背景图像类型是

注意:上面的代码将反映应用程序中的所有对话框。如果您想要一个带有背景图像的特定对话框,而不是从这些默认样式中派生新样式,请按照上述步骤将其应用于您的DialogMenuHawaii或任何运行时Dialogs

如何:我建议您阅读 Shai 的博客文章LWUIT 资源编辑器教程第 1部分到第 10 部分。为了更好地了解资源编辑器的特性和功能。

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

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();
    }
}
于 2011-11-29T16:31:54.193 回答
0

这是用于对话框背景。

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

如果你想用图像设置对话框的透明度。

dialog.getStyle().setBgImage(Image.createImage("/image/image.png");
于 2012-05-08T09:45:01.477 回答