使用ComponentResizer时重叠的组件

时间:2019-05-23 04:10:28

标签: java swing jtable netbeans-10

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

拖动表格后当前如下:

enter image description here

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

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

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

2 个答案:

答案 0 :(得分:2)

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

因此,当将组件添加到同一面板时,Swing将按照相反的顺序将组件添加到面板上。在您的情况下,您似乎先将组件添加到面板,然后再将滚动窗格添加到面板。

所以您可以:

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

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

答案 1 :(得分:0)

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