Web services 在LWUIT中形成玻璃窗格

Web services 在LWUIT中形成玻璃窗格,web-services,java-me,lwuit,glasspane,Web Services,Java Me,Lwuit,Glasspane,我正在尝试使用LWUIT中的Form Glass Pane创建一个等待屏幕,下面是我正在使用的代码 public class LoadingGlassPane implements Painter { public static boolean isShown = false; public static IForm form; public void paint(Graphics g, Rectangle rect) { System.out.

我正在尝试使用LWUIT中的Form Glass Pane创建一个等待屏幕,下面是我正在使用的代码

    public class LoadingGlassPane implements Painter {
    public static boolean isShown = false;
    public static IForm form;

    public void paint(Graphics g, Rectangle rect) {
        System.out.println("paint LoadingGlassPane");
        Font font = g.getFont();
        int color = g.getColor();
        g.setColor(0);
        g.setFont(Font.getDefaultFont());
        g.drawString("Loading...", 20, 120);
        g.setColor(color);
        g.setFont(font);
    }

    public void installPane(IForm f) {
        f.setGlassPane(this);
    }

    public void uninstallPane(IForm f) {
        f.setGlassPane(null);
    }

    public static IForm getForm() {
        return form;
    }

    public static void setForm(IForm form) {
        LoadingGlassPane.form = form;
    }

    public static boolean isIsShown() {
        return isShown;
    }

    public static void setIsShown(boolean isShown) {
        LoadingGlassPane.isShown = isShown;
    }
}


我想做的就是在加载数据时打开玻璃面板,在加载完成后将其隐藏,但是当它发送请求并得到响应显示玻璃面板后,我尝试将玻璃面板放在不同的线程中,以独立于主线程运行,而且它也不起作用。

Web服务代码阻塞了吗


如果你参加EDT,那就不行了。您需要从完成时卸载。

Web服务代码是否阻塞

如果你参加EDT,那就不行了。您需要从完成时卸载

public class ProgressGlassPane extends LoadingGlassPane implements Animation, Runnable {

        int spacing = 20;
        int fontSpacing = 10;
        String loadMsg = "Loading...";
        //HTMLComponent htmlC;
    //    Dialog loading;

    //    public ProgressGlassPane(Dialog loading) {
    //        this.loading = loading;
    //    }
        public ProgressGlassPane() {
        }

        public void paint(Graphics g, Rectangle rect) {
            //while (isShown == true) {
                System.out.println("paint ProgressGlassPane");
                int color = g.getColor();
                Font font = g.getFont();

                int pos = (int) ((System.currentTimeMillis() % 2700) / 300);
                Font f = Font.getDefaultFont();
                //int startX = loading.getAbsoluteX() + (loading.getWidth() / 2) - spacing;
                int startX = (LGB.width / 2) - spacing;
                //int fontStartX = loading.getAbsoluteX() + (loading.getWidth() - f.stringWidth(loadMsg)) / 2;
                int fontStartX = (LGB.width - f.stringWidth(loadMsg)) / 2;
                //int startY = loading.getAbsoluteY() + (loading.getHeight() / 2) - spacing - (f.getHeight() + fontSpacing) / 2;
                int startY = (LGB.height / 2) - spacing - (f.getHeight() + fontSpacing) / 2;
                int i = 0;
                g.setColor(0xffffff);
                g.fillRect(Math.min(startX - 3, fontStartX), startY - 3, Math.max(spacing * 2 + 7, f.stringWidth(loadMsg)) + 1, spacing * 2 + 7 + f.getHeight() + fontSpacing);
                g.setColor(0);
                g.setFont(f);
                g.drawString(loadMsg, fontStartX, startY);
                startY += f.getHeight() + fontSpacing;
                for (int y = 0; y < 3; y++) {
                    for (int x = 0; x < 3; x++) {
                        int thickness = 3;
                        if (i == pos) {
                            thickness = 7;
                        } else if (i == pos - 1) {
                            thickness = 5;
                        }
                        g.fillRect(startX + x * spacing - (thickness / 2), startY + y * spacing - (thickness / 2), thickness, thickness);
                        i++;
                    }
                }
                g.setColor(color);
                g.setFont(font);
           // }
        }

        public boolean animate() {
            return true;
        }

        public void paint(Graphics g) {
            paint(g, null);
        }

        //void installPane(Form f) {
        public void installPane(IForm f) {
            super.installPane(f);
            //f.setGlassPane(this);
            f.registerAnimated(this);

        }

        //void uninstallPane(Form f) {
        public void uninstallPane(IForm f) {
            super.uninstallPane(f);
            //f.setGlassPane(this);
            f.deregisterAnimated(this);
        }

        public void run() {
            System.out.println("I'm running");
            if (isShown == true && form != null) {
                installPane(form);
            }
            else
            {
                uninstallPane(form);
            }
        }
    }
public static ProgressGlassPane progressPane;
progressPane = new ProgressGlassPane();

progressPane.setForm(this);
progressPane.setIsShown(true);
progressPane.run();

//Some Webservice code I want to run 
progressPane.setIsShown(false);