我遇到了一个问题,我似乎找不到答案,也无法在网上找到答案。
我有一个JLayeredPane,当它只有一个子面板时,我可以使用setCursor()正确地设置光标。光标出现了,一切都很好。但是,当我在JLayeredPane中添加一个额外的JPanel时,光标不再显示
例如,这是可行的:
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中工作吗?
发布于 2010-06-04 13:49:42
如果你看一下javax.swing.JLayeredPane源代码,你会看到它的构造函数是这样定义的:
public JLayeredPane() {
setLayout(null);
}这清楚地表明它需要自己处理组件布局。因此,您可以猜测(虽然没有文档记录,但我会认为这是文档错误),您不应该更改JLayeredPane的布局。
发布于 2013-11-14 01:18:56
虽然这个话题很古老,但没有一个答案令人满意。我通过以下方式解决了调用JLayeredPane的setCursor方法的问题:
this.getParent().setCursor( Cursor.getDefaultCursor() );其中"this“是我要将光标更改到的组件。它的父对象是JLayeredPane (因为它是添加到其中的)。
发布于 2010-06-04 05:16:36
在使用How to Use Layered Panes教程中的演示代码时,我可以很好地工作。
基于这3行代码,我能从教程中看到的唯一区别是您使用的是布局管理器。
将您的代码与教程进行比较,以找出其他差异。
https://stackoverflow.com/questions/2969813
复制相似问题