有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

swing使用java自定义处理图标

我想在按钮上显示处理图标,一旦点击它,让用户理解应用程序正在加载页面,他必须等待,直到它完成

以下是我为以下代码获得的等待光标:

enter image description here

我为满足上述要求而开发的代码如下:

 public static boolean waitCursorIsShowing;
 public Cursor waitCursor, defaultCursor;

 waitCursor = new Cursor(Cursor.WAIT_CURSOR);
 defaultCursor = new Cursor(Cursor.DEFAULT_CURSOR);

 waitCursorIsShowing = true;
 if (waitCursorIsShowing)
        {          
            JFrame frame.setCursor(waitCursor);

            -----------------------------------------------
            /* code to load the page/ perform the business logic */
            -----------------------------------------------

            waitCursorIsShowing = false;
            frame.setCursor(defaultCursor);
        }

根据我的要求,该代码运行良好。但当我想在点击按钮时在按钮上显示另一个处理图像图标时,我得到的结果是相反的顺序。我的意思是,当点击按钮并加载页面时,按钮上不会显示处理图像图标,但当执行操作并在页面加载后释放按钮时,应用程序会在按钮上显示处理图像图标

以下是我为以下代码获得的处理图像图标:

enter image description here

请帮助我在哪里编码错误。下面是修改后的代码

public static boolean waitCursorIsShowing;
 public Cursor waitCursor, defaultCursor;

 waitCursor = new Cursor(Cursor.WAIT_CURSOR);
 defaultCursor = new Cursor(Cursor.DEFAULT_CURSOR);

 waitCursorIsShowing = true;
 if (waitCursorIsShowing)
        {          

            URL url = getClass().getResource("/Images/loader8.gif");
            b4.setText("Loading");
            b4.setIcon(new ImageIcon(url));

            -----------------------------------------------
            /* code to load the page/ perform the business logic */
            -----------------------------------------------

            waitCursorIsShowing = false;
            b4.setIcon(new ImageIcon());
                b4.setText("Submit");
        }

b4是我想要获取处理图像图标的按钮

如何修改我的代码,以便在单击按钮并应用程序加载页面时自定义按钮上的图标


共 (1) 个答案

  1. # 1 楼答案

    请记住,所有事件都在事件调度线程上处理,该线程与处理绘制的线程相同。如果在该线程上加载页面,则在加载完成之前,框架将无法重新绘制。相反,在后台线程上进行加载,并在完成后使用SwingUtilities.invokeLater()调用将图标设置回原位