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

JTabbedPane:选项卡之前和之后的组件

夏侯旻
2023-03-14
问题内容

这类似于问题如何在Java Swing中构建Google-
chrome标签和菜单栏界面?(我想实现相同的目的),但更重要的是:如何在JTabbedPane中的选项卡的前面和后面放置组件?

我已经自己想到了按钮的想法,但是我宁愿有一个JTabbedPane,因为它确实是它的意思,但是在侧面装饰有按钮或图标。

我已经看到,基里尔(Kirill)的laf-widget项目对多个LaF都执行了类似的操作(选项卡左侧的放大镜图标)。但是,我必须承认,我还不太了解他的工作方式-
而且似乎是一个有点复杂的过程,在此过程中,一个人“物理地”更改了相关的LaF(字节码对其进行了操作),注入了laf。 -widget到UI委托中-
而且我仍然不知道JTabbedPane或TabbedPaneUI是如何实际调制以注入该图标/按钮的。


问题答案:

我最后问了Substance LaF / laf-
widget的Kirill,他如何设法在装饰JTabbedPanes的laf-widget的选项卡前面放置一个按钮,这是他的回答:

它依靠BasicTabbedPaneUI.tabAreaInsets字段为按钮腾出空间,并依靠按钮组件的自定义setBounds将该自身放置在该区域中。

有关更多代码,请参见laf-widget项目中的TabOverviewButton和TabOverviewDialogWidget类。

通常,选项卡式窗格的UI委托是最缺乏吸引力的增强方法之一,因为它具有许多私有和受程序包保护的方法

谢谢,基里尔!



 类似资料:
  • 使用一个JTabbedPane,我想捕捉一个新选项卡的选择发生变化之前的瞬间,并执行一个操作。这类似于swing组件的焦点丢失事件。其目的是在选项卡更改时将几个JTextFields的文本保存到外部文件中,因此每次用户单击不同的选项卡时,当前选项卡的值都会写入外部文件。 我一直在使用ChangeListener来跟踪选项卡的更改,但还没有找到一种方法来完成我需要的操作。在下一个简单的例子中有什么想

  • 我在主类中有这个类,用来在我的JTabbedPane上放置一个关闭按钮。问题是,例如,我打开了三个选项卡:journal、contact和upload,而contact选项卡是当前选择的选项卡。当我尝试关闭不是选定选项卡的日记选项卡时,关闭的是当前选定的选项卡。 这就是我调用选项卡的方法:

  • 问题内容: 我需要使用mySQL获取围绕ID的ID。 例子: 表格中的ID: 例如,我需要知道ID 9周围的5个ID。查询应返回: 谢谢! 问题答案: 一个可能的解决方案是 计算每个ID的绝对值,然后减去ID。 排序结果并将结果集限制为5个记录。 SQL语句 编辑 (向ypercube表示感谢,以指出此解决方案中可能存在的缺陷) 如果要从左侧获取2个id,从右侧获取2个id,则可以按以下方式调整该

  • 所以问题是,selenium在page1中搜索特定的项目。然后它点击它,根据网站的设计,它在一个新的标签中打开page2。如何让selenium跟随单击并在新选项卡上工作? 我虽然使用美丽的汤只是复制从page1的网址,但网站没有显示网址。相反,它显示了获取URL的函数。真的很奇怪,也很混乱。想法?

  • 我有一个带有5个标签的JTabbedPane。我在每个选项卡上添加了一个JPanel,比如说5个JPanel,每个选项卡上有几个组件。如果我想根据一个标志变量动态更新选项卡内容,比如替换选项卡4上的内容,我需要用新的Jpanel替换现有的面板,如何在特定的选项卡上实现这种动态更新?

  • 我非常精通编码,但偶尔我会遇到似乎做基本相同事情的代码。我在这里的主要问题是,为什么你会使用 .() 而不是 ? 我一直在寻找,似乎找不到两者之间区别的明确定义,以及何时使用它们,何时不使用它们。 一个比另一个有什么好处,为什么我要使用一个而不是另一个??有人能给我解释一下吗?