当前位置: 首页 > 面试题库 >

JTabbedPane:如果堆叠/ Nimbus,则避免对标签进行自动重新排序

公西培
2023-03-14
问题内容

JTabbedPane正是我要达到的目的。我的水平空间非常有限,所以我的Tab可以叠放,这完全可以。

但是默认行为是,如果用户单击选项卡,则* 选项卡将重新排序,以使活动的选项卡变为低位 * s。从理论上看,非常直观和合乎逻辑的内容是实际使用中的噩梦,因为用户会松散地了解“哪个是哪个”。一次又一次地告诉我,这简直是令人困惑。

我想应该有可能重写UI的某些方法来避免这种行为(并且我不在乎纸卡是否可能在物理上实现:-)。

有谁知道我需要在哪里做?我正在使用Nimbus LAF,它似乎并没有使它更容易。

(我曾考虑过使用radiobuttons /
cardLayout,但是我需要在选项卡标题中放置一个自定义面板,并且radiobuttons只能有一个字符串或图标。对于JToggleButton来说也是一样的。)

任何提示都非常欢迎!

感谢和亲切的问候,菲利普


问题答案:

好的,我发现了问题。在

package javax.swing.plaf.basic.BasicTabbedPaneUI;

它说像这样

// Rotate run array so that selected run is first
            if (shouldRotateTabRuns(tabPlacement)) {
                rotateTabRuns(tabPlacement, selectedRun);
            }

可惜的是,似乎并没有容易的方法来改变它。

尽管如果您省略了对此事的调用rotateTabRuns(tabPlacement, selectedRun);或更改shouldRotateTabRuns(tabPlacement),应该没问题。但是,这样做必须重写一大堆类……具体取决于您使用的是哪一个类。

像这样继承

Basic > Synth > Nimbus

在每个L&F级别上,都有几个要自定义的类…我没有数。

希望能帮助到你!:D

编辑 哦,是的… @mkorbel已经提供了该 aephyr 的解决方案,为什么不使用它呢?



 类似资料:
  • 问题内容: 我有一个,我需要能够对列进行重新排序。但是,我希望第一列不能重新排序。我使用以下命令来启用重新排序: 现在可以对列进行重新排序,包括不需要的第一列。有什么方法可以锁定第一列? 我已经看到一些使用两个表的解决方案,其中第一列在单独的表中,但是也许有更好/更简单的方法。 问题答案: 我认为您需要重写中的方法。在类有一个方法,你应该能够看到,以确定它是否是你的固定列,然后你应该能够取消事件。

  • 问题内容: 我正在创建一个新的Map并将字符串推入其中(没什么大不了的)-但是我注意到随着Map的增长,字符串正在重新排序。是否可以停止这种重新排序,以便地图中的项目保持其放入的顺序? 问题答案: 如果您关心订单,可以使用。实现该接口的实际类(至少在大多数情况下是)。或者,在仍然使用基于哈希表的容器的同时,也维持其顺序。

  • 本文向大家介绍使用了float的标签,如何避免左侧贴边重叠?相关面试题,主要包含被问及使用了float的标签,如何避免左侧贴边重叠?时的应答技巧和注意事项,需要的朋友参考一下 因为第一个 left 元素用了 float,所以脱离了普通文档流,而 right 元素因为在 BFC 内,自动贴到左侧,所以重叠了。 解决方案是,利用BFC这一特性: 形成了BFC的区域不会与 float box 重叠 所以

  • 我试图找到最好的策略,以产生一个1D的时间为基础的绘图与标签。目前看起来是这样的: 问题是,有些时间跨度很少发生,有些时间跨度密度很高。 我想实现的是扭曲时间轴,以便在密集区域中标签间隔开,以避免重叠。或者,我可以想象在没有轴变形的情况下显示实际数据点,但分布标签,使它们不会重叠。 编辑:这是我试图手动清理混乱,以了解我想要的输出:

  • 问题内容: @Scheduled(fixedDelay = 5000) public void myJob() { Thread.sleep(12000); } 如果先前的例程尚未完成,如何防止此spring作业运行? 问题答案: 使用,该时间段是在工作完成后计算的,因此无需担心。

  • 问题内容: 级联正是CSS变得特别而强大的原因。但在媒体查询的情况下,重叠 可 似乎有问题。 考虑以下CSS(CSS媒体查询重叠的连续规则): 因此,当屏幕正好为45em宽时,将根据标准CSS级联来处理45em处的重叠: 所有定义都将首先应用, 并将在此之后全部应用。 请考虑以下两个条件: 通常,所有文本都是,但是 查询A 是唯一的并且具有。 由于 查询B 适用于较大的视口,因此其文本具有CSS