如何在java中更改选项卡标签的宽度,但保持;选择“;选择权
我的程序中有一个如何在java中更改选项卡标签的宽度,但保持;选择“;选择权,java,html,swing,jtabbedpane,Java,Html,Swing,Jtabbedpane,我的程序中有一个JTabbedPane对象,我覆盖getForegroundAt和getBackgroundAt方法,以便在选择或不选择选项卡时具有不同的背景色。我想更改选项卡的宽度和高度。我使用如下类似的代码实现了这一点: jtp.addTab("<html><body><table width='200'>Main</table></body></html>", mainPanel); jtp.addTab(“主”,
JTabbedPane
对象,我覆盖getForegroundAt
和getBackgroundAt
方法,以便在选择或不选择选项卡时具有不同的背景色。我想更改选项卡的宽度和高度。我使用如下类似的代码实现了这一点:
jtp.addTab("<html><body><table width='200'>Main</table></body></html>", mainPanel);
jtp.addTab(“主”,主面板);
问题是,如果我使用此html代码更改选项卡的宽度,我覆盖的方法将不再被调用,因为选项是用html代码设置的。有办法解决这个问题吗?是否有html代码,我可以使用它来改变标签的背景颜色,这取决于它是否被选中?谢谢。这里有一种通过覆盖JTabbedPane的UI中的calculateTabWidth(…)来更改选项卡宽度的方法: 编辑:程序员的评论是正确的。我已经将示例从
BasicTabbedPaneUI
更改为metaltabedPaneUI
,因为这是用于此示例的默认UI。如果要为应用程序指定特定的L&F,请相应地更改UI
import java.awt.*;
import javax.swing.*;
import javax.swing.plaf.metal.*;
public class CustomTabWidthDemo implements Runnable
{
public static void main(String[] args)
{
SwingUtilities.invokeLater(new CustomTabWidthDemo());
}
public void run()
{
JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.setUI(new MetalTabbedPaneUI()
{
@Override
protected int calculateTabWidth(int tabPlacement, int tabIndex,
FontMetrics metrics)
{
int width = super.calculateTabWidth(tabPlacement, tabIndex, metrics);
int extra = tabIndex * 50;
return width + extra;
}
});
tabbedPane.addTab("JTable", new JScrollPane(new JTable(5,5)));
tabbedPane.addTab("JTree", new JScrollPane(new JTree()));
tabbedPane.addTab("JSplitPane", new JSplitPane());
JPanel p = new JPanel();
p.add(tabbedPane);
JFrame frame = new JFrame();
frame.setContentPane(p);
frame.pack();
frame.setVisible(true);
}
}
只要您意识到这将完全破坏当前安装的外观