【问题标题】:JTabbedPane tab border removalJTabbedPane 选项卡边框移除
【发布时间】:2015-12-20 11:13:31
【问题描述】:

JTabbedPane - 即使在使用 BasicTabbedPaneUI 之后也会显示选项卡边框。请让我知道如何更改以使选项卡之间不显示边框?有什么方法可以彻底去掉边框吗?

请把代码sn-p发给我。提前致谢。

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.SwingUtilities;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.plaf.basic.BasicTabbedPaneUI;

public class TabbedPaneTest implements Runnable {

    @Override
    public void run() {
        final JTabbedPane pane = new JTabbedPane();
        pane.addTab("A", createTab(Color.RED));
        pane.addTab("B", createTab(Color.YELLOW));
        pane.addTab("C", createTab(Color.BLUE));

        pane.setUI(new BasicTabbedPaneUI() {
            @Override
            protected void paintContentBorder(Graphics g, int tabPlacement, int selectedIndex) {

            }
        });
        pane.setBackground(Color.WHITE);

        pane.addChangeListener(new ChangeListener() {

            @Override
            public void stateChanged(ChangeEvent arg0) {
                pane.setForegroundAt(pane.getSelectedIndex(), Color.GREEN);

            }
        });
        final JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(pane);
        frame.pack();
        //frame.setSize(500, 200);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    private JPanel createTab(Color color) {
        JPanel p = new JPanel(new BorderLayout()) {
            private static final long serialVersionUID = 1L;

            @Override
            public Dimension getPreferredSize() {
                return new Dimension(400, 300);
            }
        };
        p.setBorder(BorderFactory.createLineBorder(color, 2));
        p.setBackground(Color.WHITE);
        return p;
    }

    public static void main(String[] args) throws Exception {
        SwingUtilities.invokeLater(new TabbedPaneTest());
    }
}

【问题讨论】:

标签: java swing jtabbedpane


【解决方案1】:
// Remove the white line under a tab button
Insets insets = UIManager.getInsets("TabbedPane.contentBorderInsets");
insets.top = -1;
UIManager.put("TabbedPane.contentBorderInsets", insets);

【讨论】:

  • 在 Ubuntu 上不受影响,但在 Windows 上工作就像一个魅力。我不知道为什么是sp
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-09
  • 1970-01-01
  • 2014-02-17
  • 2023-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多