- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在 SwingX 的例子中,JXCollapsiblePane 与按钮一起使用,但我想用鼠标事件转置它。在我的示例中,JXCollapsiblePane 一开始是关闭的。只有当用户将鼠标放在按钮上时才会打开 JXCollapsiblePane。当鼠标离开该区域时,假定 JXCollapsiblePane 再次折叠。我的问题:当鼠标通过按钮离开该区域时,JXCollapsiblePane 没有折叠。
public class CollapsiblePaneDemo
{
/**
* @param args
*/
public static void main( String[] args )
{
final JXCollapsiblePane cp =
new JXCollapsiblePane( JXCollapsiblePane.Direction.RIGHT );
// JXCollapsiblePane can be used like any other container
cp.setLayout( new BorderLayout() );
// the Controls panel with a textfield to filter the tree
JPanel controls = new JPanel( new FlowLayout( FlowLayout.LEFT, 4, 0 ) );
controls.add( new JLabel( "Search:" ) );
controls.add( new JTextField( 10 ) );
controls.add( new JButton( "Refresh" ) );
controls.setBorder( new TitledBorder( "Filters" ) );
cp.add( "Center", controls );
JXFrame frame = new JXFrame();
frame.setLayout( new BorderLayout() );
// Then the tree - we assume the Controls would somehow filter the tree
JScrollPane scroll = new JScrollPane( new JTree() );
// Put the "Controls" first
frame.add( "Center", scroll );
// Show/hide the "Controls"
final JButton toggle = new JButton( cp.getActionMap()
.get( JXCollapsiblePane.TOGGLE_ACTION ) );
toggle.setText( "-" );
toggle.setPreferredSize( new Dimension( 20, toggle.getSize().height ) );
toggle.addMouseListener( new MouseAdapter()
{
@Override
public void mouseEntered( MouseEvent e )
{
if ( cp.getSize().width == 0 )
{
toggle.doClick();
}
}
} );
final JPanel panel = new JPanel();
panel.setLayout( new BorderLayout() );
panel.add( "Center", toggle );
panel.add( "East", cp );
panel.addMouseListener( new MouseAdapter()
{
@Override
public void mouseExited( MouseEvent e )
{
if ( !panel.contains( e.getPoint() ) )
{
toggle.doClick();
}
}
} );
frame.add( "East", panel );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.pack();
cp.setCollapsed( true );
frame.setVisible( true );
}
}
谢谢,
最佳答案
当光标离开 JPanel
时触发 mouseExited
事件 - 离开 JPanel
的边界或输入其中之一子组件。因为按钮就在 JPanel
的边缘,所以光标永远不会在左边的路上再次进入 JPanel
,因此无法退出它。
您可以修改按钮的 MouseListener
中的 mouseEntered
方法,以便在控制面板打开时折叠它,并让您现有的 MouseListener
处理这种情况用户通过框架边框离开的地方。如果你想阻止用户追逐按钮并重新触发它(我没有在代码中打扰),你需要跟踪控制面板的展开/折叠状态(SwingX API 可能已经为你做了这个)下)。
我修改的 MouseListener:
toggle.addMouseListener( new MouseAdapter()
{
@Override
public void mouseEntered( MouseEvent e )
{
toggle.doClick();
}
} );
关于java - 鼠标悬停触发 JXCollapsiblePane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11307884/
在 SwingX 的例子中,JXCollapsiblePane 与按钮一起使用,但我想用鼠标事件转置它。在我的示例中,JXCollapsiblePane 一开始是关闭的。只有当用户将鼠标放在按钮上时才
所以我在java中的按钮有问题。我通过扩展 JButton 创建了按钮,这样我就可以让所有按钮看起来都一样。现在,我向该按钮的构造函数添加了一个 ActionListener,并且 ActionLis
我有一个使用 JXMultiSplitPane 来显示多个组件的用户界面。但是,我希望某些 Pane 是可折叠的。我考虑过如何在此处使用 JXCollapsiblePane,但我想不出一种让选择 Pa
我最近发现了 swingx 并想尝试使用 JXCollapsiblePane。但我无法让它工作。我找到了这段代码: Action toggleAction = collapsiblePane.g
我有一个类,它为 GridLayout 中的网格创建元素,该类基本上由 4 个打包在一起的面板组成。 我希望其中一个面板(包含 JTextArea)是可折叠的,因为它相当冗长,而且我不希望它占用太多的
我是 SwingX 新手,在使用 Netbeans 6.9.1 的 Pallete 管理器使用 JXCollapsiblePane 和 JXTaskPane 时遇到问题具体来说: 对于JXTaskPa
我是一名优秀的程序员,十分优秀!