【问题标题】:How to remove indents in the tabs JTabbedPane?如何删除标签 JTabbedPane 中的缩进?
【发布时间】:2014-08-08 14:55:33
【问题描述】:

如何去除JTabbedPane 中图标标签周围的缩进?即这个图标在标签的全尺寸上是什么?

【问题讨论】:

标签: java swing user-interface jtabbedpane


【解决方案1】:

你可以用BasicTabbedPaneUI的getTabInsets()方法尝试下一个技巧:

import java.awt.Insets;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTabbedPane;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.plaf.basic.BasicTabbedPaneUI;

public class TestFrame extends JFrame {

    public TestFrame() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        init();
        pack();
        setVisible(true);
    }

    private void init() {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (ClassNotFoundException | InstantiationException
                | IllegalAccessException | UnsupportedLookAndFeelException e) {
            e.printStackTrace();
        }
        JTabbedPane pane = new JTabbedPane(JTabbedPane.BOTTOM);
        pane.addTab("", new ImageIcon(TestFrame.class.getResource("1111.png")), new JLabel("lbl"));
        pane.addTab("test2", new JLabel("lbl2"));
        pane.setFocusable(false);
        pane.setUI(new BasicTabbedPaneUI() {
            @Override
            protected Insets getTabInsets(int tabPlacement, int tabIndex) {
                return new Insets(0, 0, 0, 0);
            }
        });
        add(pane);
    }


    public static void main(String... strings) {
        new TestFrame();
    }

}

也可以试试calculateTabWidth() 和calculateTabHeight()。

【讨论】:

  • 这正是我所需要的。非常感谢
  • 这是为了什么? calculateTabWidth() 和 calculateTabHeight()
  • +1 正确的方向,但需要to override more methods,只是糟糕的API,大部分...,前三名
  • @silverhawk,您可以看到图像周围的一些间隙,这些方法可以将其最小化。另请阅读 mKorbel 发布的链接。
猜你喜欢
  • 2011-04-09
  • 1970-01-01
  • 1970-01-01
  • 2019-09-22
  • 2012-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多