swing使用java自定义处理图标
我想在按钮上显示处理图标,一旦点击它,让用户理解应用程序正在加载页面,他必须等待,直到它完成
以下是我为以下代码获得的等待光标:
我为满足上述要求而开发的代码如下:
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);
}
根据我的要求,该代码运行良好。但当我想在点击按钮时在按钮上显示另一个处理图像图标时,我得到的结果是相反的顺序。我的意思是,当点击按钮并加载页面时,按钮上不会显示处理图像图标,但当执行操作并在页面加载后释放按钮时,应用程序会在按钮上显示处理图像图标
以下是我为以下代码获得的处理图像图标:
请帮助我在哪里编码错误。下面是修改后的代码
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 楼答案
请记住,所有事件都在事件调度线程上处理,该线程与处理绘制的线程相同。如果在该线程上加载页面,则在加载完成之前,框架将无法重新绘制。相反,在后台线程上进行加载,并在完成后使用
SwingUtilities.invokeLater()
调用将图标设置回原位