カーソルを砂時計にし、画面操作を出来ないようにする方法
砂時計を制御するクラス
public class LockGlassPane extends JPanel {
@Override
public void updateUI() {
super.updateUI();
setOpaque(false);
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
}
@Override
public void setVisible(boolean isVisible) {
boolean oldVisible = isVisible();
super.setVisible(isVisible);
JRootPane rootPane = getRootPane();
if (rootPane != null) {
if (isVisible() != oldVisible) {
rootPane.getLayeredPane().setVisible(!isVisible);
}
}
}
@Override
protected void paintComponent(Graphics g) {
JRootPane rootPane = getRootPane();
if (rootPane != null) {
rootPane.getLayeredPane().print(g);
}
super.paintComponent(g);
}
}
実装部分
// 砂時計用のパネル設定
Component gp = new LockGlassPane();
gp.setVisible(false);
getRootPane().setGlassPane(gp);
// 砂時計にする
flame.getRootPane().getGlassPane().setVisible(true);
Component c = (Component) e.getSource();
c.setEnabled(false);
// 砂時計を元に戻す
flame.getRootPane().getGlassPane().setVisible(false);
c.setEnabled(true);