LWUIT:如何防止按钮在 J2ME 中改变颜色

Posted

技术标签:

【中文标题】LWUIT:如何防止按钮在 J2ME 中改变颜色【英文标题】:LWUIT : How to Prevent Button change its color in J2ME 【发布时间】:2012-12-01 23:56:25 【问题描述】:

我使用 LWUIT 创建了一个应用程序。它使用标题栏,像这样

它使用容器。在此标题栏容器下,我创建了可滚动列表。

奇怪的是,如果我滚动这个列表,标题栏中的按钮(菜单按钮和过滤器按钮)的颜色会改变。当我尝试设备中的应用程序时,它就发生了。当我尝试在模拟器中使用它时,它就好了

这是我创建的按钮的代码

    b_menu.getUnselectedStyle().setBorder(null);
    b_menu.getSelectedStyle().setBorder(null);
    b_menu.getPressedStyle().setBorder(null);
    b_menu.setIcon(ImageUtil.loadImage("/menu.png"));
    b_menu.setRolloverIcon(ImageUtil.loadImage("/menu.png"));
    b_menu.setPressedIcon(ImageUtil.loadImage("/menu.png"));
    b_menu.setName("menu");
    b_menu.getStyle().setBgTransparency(0);
    b_menu.getStyle().setBgPainter(new LinearGradientPainter(0xcf266a, 0xcf266a, false));
    b_menu.getSelectedStyle().setPadding(5, 5, 5, 5);
    b_menu.getSelectedStyle().setMargin(0, 0, 0, 0);
    b_menu.getUnselectedStyle().setPadding(5, 5, 5, 5);
    b_menu.getSelectedStyle().setMargin(0, 0, 0, 0);
    b_menu.getSelectedStyle().setBgColor(0xcf266a, false);
    b_menu.getSelectedStyle().setBgTransparency(0);
    b_menu.getSelectedStyle().setBgPainter(new LinearGradientPainter(0xcf266a, 0xcf266a, false));
    b_menu.getUnselectedStyle().setBgTransparency(0);
    b_menu.getUnselectedStyle().setBgPainter(new LinearGradientPainter(0xcf266a, 0xcf266a, false));
    b_menu.getPressedStyle().setBgTransparency(0);
    b_menu.getPressedStyle().setBgPainter(new LinearGradientPainter(0xcf266a, 0xcf266a, false));

你遇到过并解决过这个问题吗?

问候

吉里

【问题讨论】:

如何隐藏原生标题栏?我只能将应用程序设置为全屏模式,但我也失去了顶部栏。 @jmunoz 试试这个Display.getInstance().setTouchScreenDevice(true); Display.getInstance().setCommandBehavior(BACK); 那不行,我找到了使用Display.getInstance().setObjectTrait(Display.getInstance().getImplementation(), "nokia.ui.canvas.status_zone", Boolean.TRUE);显示状态栏的方法 但是我还有一个问题....当您将应用程序置于全屏模式时,我想您在所有界面中都丢失了返回本机按钮。你如何构建这个后退按钮? 【参考方案1】:

哦,答案是我还要改变未选中的样式。 代码在这里

    b_menu.getUnselectedStyle().setBorder(null);
    b_menu.getSelectedStyle().setBorder(null);
    b_menu.getPressedStyle().setBorder(null);

    b_menu.setIcon(ImageUtil.loadImage("/menu.png"));
    b_menu.setRolloverIcon(ImageUtil.loadImage("/menu.png"));
    b_menu.setPressedIcon(ImageUtil.loadImage("/menu.png"));

    b_menu.setName("menu");

    b_menu.getStyle().setBgTransparency(0);
    b_menu.getStyle().setBgPainter(new LinearGradientPainter(0xcf266a, 0xcf266a, false));

    b_menu.getSelectedStyle().setPadding(5, 5, 5, 5);
    b_menu.getSelectedStyle().setMargin(0, 0, 0, 0);
    b_menu.getSelectedStyle().setBgTransparency(0);
    b_menu.getSelectedStyle().setBgPainter(new LinearGradientPainter(0xcf266a, 0xcf266a, false));

    b_menu.getUnselectedStyle().setPadding(5, 5, 5, 5);
    b_menu.getUnselectedStyle().setMargin(0, 0, 0, 0);
    b_menu.getUnselectedStyle().setBgTransparency(0);
    b_menu.getUnselectedStyle().setBgPainter(new LinearGradientPainter(0xcf266a, 0xcf266a, false));

    b_menu.getPressedStyle().setBgTransparency(0);
    b_menu.getPressedStyle().setBgPainter(new LinearGradientPainter(0xcf266a, 0xcf266a, false));

    b_menu.addActionListener(this);
    b_menu.repaint();

感谢您查看此问题!

问候

吉里

【讨论】:

以上是关于LWUIT:如何防止按钮在 J2ME 中改变颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 LWUIT 在 J2ME 屏幕底部设置标签?

如何在 J2me 中创建具有多行和多列的列表?

LWUIT: tabs - 如何标记当前选中的选项卡

哪个与大多数 J2ME 设备兼容:- LWUIT 还是 LCDUI?

在 LWUIT j2me 中设置标签中文本的大小

我可以减小用 LWUIT 编写的 J2ME jar 的大小吗?