java – JTabbedPane:如果堆叠/ Nimbus,则避免自动重新排序选项卡

JTabbedPane就是我的目的所需要的.
我的水平空间非常有限,所以我的标签堆叠,这是完全可以的.

但默认行为是,如果用户点击Tab,则* Tabs会重新排序,以便活动Tab变为低于mos * t.在理论上看起来非常直观和合乎逻辑的是实际使用中的噩梦,因为用户松散地追踪“哪个是哪个”.它只是简单的混乱,我一次又一次地被告知.

我想应该可以覆盖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)…但是,为此,你必须覆盖一大堆类…取决于你使用的plaf.

它继承了这样的

Basic > Synth > Nimbus

在每个L& F级别,有几个类可以自定义……我没有数.

希望能帮助到你! :d

编辑
哦是的… @mkorbel已经提供了这种和谐的解决方案为什么不使用它?

上一篇:用C语言编写的Python模块中的常量整数属性


下一篇:php – 如何为整个项目定义一些常量?