我正在尝试获得JTabbedPane
所有标签(实际标签,而不是组件)具有相同的宽度(最宽标签所需的最小宽度或恒定宽度)。
我试图覆盖BasicTabbedPaneUI.getTabBounds(int tabIndex, Rectangle dest)
,但显然BasicTabbedPaneUI
的绘制方法不使用此方法,而是使用rects数组来确定标签大小。
我的下一个方法是覆盖JTabbedPane.insertTab(String title, Icon icon, Component component, String tip, int index)
并设置标签组件的首选大小,但这似乎并不优雅,我甚至不确定它是否会起作用。
有没有办法实现这个目标?
答案 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));