ホームページ >Java >&#&チュートリアル >Java Swing の待機カーソルが常に正しく表示されないのはなぜですか? ガラス ペインを使用して修正するにはどうすればよいですか?
問題: Java での待機カーソル表示の問題
Java Swing ライブラリでは、コンポーネントのカーソルの設定が常に有効になるわけではありませんカスタム カーソルを含むネストされたパネルがある場合。これにより、待機カーソルが期待どおりに表示されず、カーソルの動作に不一致が生じる可能性があります。
修正: カーソル制御にガラス ペインを使用する
この問題に対処するには、次のようにします。コンポーネントを含むフレームのガラス枠を使用してカーソル表示を管理することをお勧めします。ガラス ペインは、フレームの階層の最上位に位置する透明なペインです。カーソルをガラス ペインに設定すると、フレーム内のすべてのコンポーネントは、独自のカーソル設定に関係なく、待機カーソルを表示できます。
コードを修正した解決策:
以下変更されたコードは、待機カーソル表示にガラス ペインを使用する方法を示しています。
import java.awt.*; import java.awt.event.*; import java.util.TimerTask; import java.util.Timer; public class BusyCursorTest extends javax.swing.JFrame { private javax.swing.JPanel cursorPanel = null; public BusyCursorTest() { // ... public static void startWaitCursor(javax.swing.JFrame frame) { frame.getGlassPane().setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.WAIT_CURSOR)); frame.getGlassPane().addMouseListener(mouseAdapter); frame.getGlassPane().setVisible(true); } private static void stopWaitCursor(javax.swing.JFrame frame) { frame.getGlassPane().setCursor(originalCursor); frame.getGlassPane().removeMouseListener(mouseAdapter); frame.getGlassPane().setVisible(false); } // ... } // ... public static java.awt.Cursor originalCursor = null; private static final java.awt.event.MouseAdapter mouseAdapter = new java.awt.event.MouseAdapter() { }; public static final int DELAY_MS = 250; }
この変更されたコードでは、 startWaitCursor() メソッドと stopWaitCursor() メソッドは、フレームのガラス枠上のカーソルを管理するために使用されます。これにより、ネストされたコンポーネントのカーソル設定に関係なく、待機カーソルが一貫して表示されるようになります。
以上がJava Swing の待機カーソルが常に正しく表示されないのはなぜですか? ガラス ペインを使用して修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。