繁体   English   中英

使用ComponentResizer时重叠的组件

[英]Overlap Components When Using ComponentResizer

我想在使用ComponentResizer类拖动它时使jTable在浮动/覆盖时可扩展。 我正在使用Rob Camick的ComponentResizer类。

拖动表格后当前如下所示:

在此处输入图片说明

我尝试将布局更改为null,但结果仍然相同。 在我的代码中,我刚刚添加了调用ComponentResizer类的方法:

ComponentResizer cr = new ComponentResizer();
cr.setSnapSize(new Dimension(10, 10));
cr.registerComponent(jScrollPane2);

我希望拖动表将浮动并覆盖其下面的组件。

Swing旨在在2D空间而非3D空间中绘制零部件。

因此,当将组件添加到同一面板时,Swing将按照相反的顺序将组件添加到面板上。 在您的情况下,您好像在将滚动面板添加到面板之前将组件添加到了面板。

因此,您可以:

  1. 反转将组件添加到面板的顺序
  2. 使用滚动窗格上的setComponentZOrder(...)方法将其值设置为0,以便最后绘制它。

但是,这仍然会引起问题,因为如果将鼠标悬停在按钮上,则会因为按钮的边框已更改而显示按钮。 这是因为Swing假定2D布局而不是3D。 如果要确保始终在按钮上绘制表格,则需要覆盖面板的isOptimizedDrawingEnable()方法。 有关ZOrder绘画的更多信息,请参见重叠布局

我通过将所有组件放在一个分层的窗格中并使用“边框布局”解决了该问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM