gpt4 book ai didi

java - 使用 ComponentResizer 时重叠组件

转载 作者:行者123 更新时间:2023-12-02 01:29:52 31 4
gpt4 key购买 nike

我想在使用 ComponentResizer 类拖动 jTable 时使其在 float /覆盖时可扩展。我正在使用ComponentResizer罗布·卡米克的类(class)。

拖动表格后当前如下:

enter image description here

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

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

我希望拖动表会 float 并覆盖其下方的组件。

最佳答案

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

因此,当组件添加到同一面板时,Swing 将以与组件添加到面板相反的顺序绘制组件。在您的情况下,看起来您先将组件添加到面板,然后再将滚动 Pane 添加到面板。

所以你可以:

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

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

关于java - 使用 ComponentResizer 时重叠组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56267970/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com