3

私は、ウェブ上のどこにも答えが見つからない、または見つけられないという問題に直面しています。

JLayeredPane があり、子 Panel が 1 つしかない場合、setCursor() を使用してカーソルを正しく設定できます。カーソルが表示され、すべて問題ありません。しかし、追加の JPanel を JLayeredPane に追加すると、カーソルが表示されなくなりました

たとえば、これは機能します:

m_layeredPane = new JLayeredPane();
m_layeredPane.setLayout(new WBLayoutManager());
m_layeredPane.add(m_mediaPanel, new Integer(0));
// m_layeredPane.add(m_whiteboardPanel, new Integer(1));

m_layeredPane.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); // WORKS

しかし、これはしません:

m_layeredPane = new JLayeredPane();
m_layeredPane.setLayout(new WBLayoutManager());
m_layeredPane.add(m_mediaPanel, new Integer(0));
m_layeredPane.add(m_whiteboardPanel, new Integer(1));

m_layeredPane.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); // FAILS

JLayeredPane 内で動作するカスタム カーソルを取得する方法を知っている人

4

4 に答える 4

3

ソースコードを見るjavax.swing.JLayeredPaneと、そのコンストラクターが次のように定義されていることがわかります。

public JLayeredPane() {
    setLayout(null);
}

これは、コンポーネントのレイアウトを単独で処理する必要があることを明確に示しています。したがって、(文書化されていませんが、文書化のバグと考えます) のレイアウトを変更してはならないことを推測できますJLayeredPane

于 2010-06-04T05:49:42.007 に答える
0

レイヤードペインのチュートリアルの使用方法のデモコードを使用すると、うまく機能します。

3 行のコードに基づくと、チュートリアルからわかる唯一の違いは、レイアウト マネージャーを使用していることです。

コードをチュートリアルと比較して、他の違いを見つけてください。

于 2010-06-03T21:16:36.407 に答える
0

最初の作業コードを試してみましたが、m_mediaPanel をレベル 1 に配置しましたか? これもおそらくうまくいきません。これは、上にあるパネルがカーソルを決定するという事実によるものだと思います。レベル 0 では、階層化されたペイン自体がこれを決定できます。

于 2010-06-03T21:27:04.573 に答える