强制 jidetabbedpane 始终显示第一个选项卡的任何方式

Posted

技术标签:

【中文标题】强制 jidetabbedpane 始终显示第一个选项卡的任何方式【英文标题】:Any way to force jidetabbedpane to show always the first tab 【发布时间】:2010-12-22 03:33:19 【问题描述】:

我要求我必须显示一个选项卡,但第一个选项卡必须是静态的。所以我尝试使用 jidetabbedpane,因为它关心效果,所有选项卡都列在一个框中,它是可导航的,它可以显示所需的关闭操作等等。但我唯一缺少的是选项:将第一个组件设置为静态或固定。

有什么办法可以解决这个问题吗?

提前致谢,

尼尔斯·德鲁斯

【问题讨论】:

关于标签的“静态或固定”是什么意思?它的内容不应该改变吗?不应该是可移动的吗?它不应该是可关闭的? 它不应该是可关闭的、可移动的,如果有很多标签打开它应该总是可见的。 【参考方案1】:

DockingManager 有一个名为setTabbedPaneCustomizer 的方法来帮助您自定义选项卡式窗格。

dockingManager.setTabbedPaneCustomizer(new DefaultDockingManager.TabbedPaneCustomizer() @Override public void customize(JideTabbedPane aTabbedPane) // figure out if the aTabbedPane is the first pane // getTabCount() == 1 might be a solution? if( isTheFirstPane(aTabbedPane) ) aTabbedPane.setShowCloseButtonOnSelectedTab(false); );

上面的代码块需要您注意找出正确的方法来确定打开的第一个窗格是否是第一个窗格。希望对您有所帮助。

【讨论】:

【参考方案2】:

听起来要求某些母版页始终可以快速访问,尽管用户正忙于创建其他选项卡。我有一个建议:

这涉及嵌套的 JTabbedPanes。如您所知,您可以将选项卡放置在组件的所有 4 个侧面。所以我要做的是创建一个只有 1 或 2 个选项卡的“主要”JTP,其中第一个当然是您的“主”选项卡。然后,该组件中的第二个页面可以是空的,也可以在用户创建他的第一个新“辅助”页面时出现。第二页也应该是 JTP,可能标签放置在不同的方向;并且所有新创建的辅助页面都将包含在这个“内部”JTP 中。用户可以在辅助页面中翻转、关闭它们等等,但主页的选项卡将始终在内部 JTP 的边界之外可见。

然后您可以修改细节,例如使主要 JTP 的选项卡不可关闭。由于该窗格只有 2 页,因此使它们不可移动应该不再是优先事项。

或者,您可以将主要内容和次要内容放在CardLayout 的不同页面上,并提供一个(或两个)按钮以快速访问(和返回)。根据您的应用程序的布局方式,这可能需要更少的空间。您可以将Action 连接到此按钮,由加速键触发...非常快速,非常方便。这可能会安抚你的老板/客户。

【讨论】:

【参考方案3】:

是的。抛弃需要带有固定第一个选项卡的选项卡式窗格的设计:这只是滥用组件来完成本不该做的事情。

您可以通过附加更改侦听器并让它否决或撤消更改来防止标签翻转;但我不会详细说明这一点,因为基本前提是错误的。

【讨论】:

非常感谢您向我解释这个要求有多么错误。我已经认为这个要求有点奇怪。我们想要实现的是前面的某种仪表板,从这里开始,您可以在选项卡中打开任何类型的对象/页面。但是你必须尽快回到仪表板,并且它必须一直可见(这样用户就可以回到“家”而不破坏旧标签)。你会为这个问题做些什么?客户非常想要这个“固定”的第一个标签,我不想把它给他,因为我明白了,他不会对解决方案感到满意。 嗯,它开始听起来更合理了。您希望 tab 始终可见,而不一定是其关联页面的内容。并且您希望选项卡不要按照可用/可访问选项卡的顺序移动。我有一个新的建议,可以满足这些要求并具有合理的美感。 (看到其他答案,我完成后尽快)

以上是关于强制 jidetabbedpane 始终显示第一个选项卡的任何方式的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 应用程序中强制“始终”访问位置

如何强制 Laravel API 始终返回 JSON,不重定向

Video.js 强制 Flash 控制显示

如何强制 div 始终可滚动?

关于 iPhone 方向和固件:始终强制方向

强制 UILabel 占用 3 行