JTabbedPane中具有相等(恒定)宽度的选项卡

时间:2009-01-24 21:25:26

标签: java swing jtabbedpane

我正在尝试获得JTabbedPane所有标签(实际标签,而不是组件)具有相同的宽度(最宽标签所需的最小宽度或恒定宽度)。

我试图覆盖BasicTabbedPaneUI.getTabBounds(int tabIndex, Rectangle dest),但显然BasicTabbedPaneUI的绘制方法不使用此方法,而是使用rects数组来确定标签大小。

我的下一个方法是覆盖JTabbedPane.insertTab(String title, Icon icon, Component component, String tip, int index)并设置标签组件的首选大小,但这似乎并不优雅,我甚至不确定它是否会起作用。

有没有办法实现这个目标?

3 个答案:

答案 0 :(得分:5)

答案很简单。 当我们为选项卡添加名称时,只需使用html格式化名称。 说

tp - JTabbedPane对象

tp.addTab("<html><body><table width='150'>Name</table></body></html>",Componentobject)

答案 1 :(得分:4)

我认为这并不像你做的那么复杂。只需将setTabComponentAt()与您设置了首选大小的JLabel一起使用。

答案 2 :(得分:0)

这对我有用。

 JLabel lab = new JLabel();
        lab.setPreferredSize(new Dimension(200, 30));
        jTabbedPane1.setTabComponentAt(0, lab);  // tab index, jLabel

或尝试对所有相同尺寸的标签组件进行此更改(在main方法中调用)

UIManager.getLookAndFeelDefaults().put("TabbedPane:TabbedPaneTab.contentMargins", new Insets(10, 100, 0, 0));