0

我想让我的 jTable 在使用 ComponentResizer 类拖动时在浮动/覆盖时可扩展。我正在使用ComponentResizerRob Camick 的课程。

目前拖动表格后如下:

在此处输入图像描述

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

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

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

4

2 回答 2

2

Swing 设计用于在 2D 空间而非 3D 空间中绘制组件。

所以当组件被添加到同一个面板时,Swing 会按照与组件添加到面板相反的顺序来绘制组件。在您的情况下,看起来您在将滚动窗格添加到面板之前将组件添加到面板。

所以你可以:

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

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

于 2019-05-23T14:48:43.247 回答
0

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

于 2019-05-27T02:28:28.343 回答