2

我是挥杆初学者。我尝试为我的项目创建一个选项卡式窗口作为 GUI 的一部分。但如下所示,用于导航选项卡的按钮显示了某种边框。有没有办法可以删除这些边框?请参阅附图以查看问题。

在此处输入图像描述

GUI的代码如下

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.*;
import javax.swing.border.EmptyBorder;

public class tst {    
    /**
     * @param args the command line arguments
     */
    public static String  generateHtml(String tabButtonLabel,String style) {
        /*@@Generates HTML for the tab button when the button label is given*/
        String ret = "<html><body style = '"+style+"'>"+tabButtonLabel+"</body></html>";
        return ret;
    }

    public static void main(String[] args) {
        // TODO code application logic here
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        JFrame frame = new JFrame("tst");
        frame.setVisible(true);
        frame.setSize(screenSize);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        /*Groups tab*/            
        JPanel groups = new JPanel();
        groups.setBackground(Color.gray);            
        /*Settings Tab*/            
        JPanel settings = new JPanel();            
        /*About Tab*/            
        JPanel about = new JPanel();            
        /*Tabbed pane to hold all panels*/
        JTabbedPane tabbedPane = new JTabbedPane();             
        /*Tabbed Pane CSS*/
        String tabButtonCss = "margin:0;width:110px;height:10px;border-radius:3px;padding:10px;background:#fff;text-align:center;border:none;";

        tabbedPane.setVisible(true);
        tabbedPane.add(generateHtml("Groups",tabButtonCss),groups);
        tabbedPane.add("Settings",settings);
        tabbedPane.add("About",about);            
        /*Tab styles*/
        tabbedPane.setBackground(Color.gray);
        tabbedPane.setForeground(Color.white);
        tabbedPane.setBounds(0, 0, 0,0);
        //tabbedPane.setBorder(new EmptyBorder(-10,-20,-10,0));            
        frame.add(tabbedPane);
    }
}
4

1 回答 1

7

正如@Smit 所指出的,这完全取决于 CSS。另请注意,Java HTML/CSS 引擎无法识别#fff颜色的“3 位”样式快捷方式。要获得白色,我们必须使用#ffffff.

CSS1 CSS2 CSS3

import java.awt.*;
import javax.swing.*;

class ExampleCSS {

    public static void showStyle(String style) {
        JPanel gui = new JPanel(new BorderLayout());

        String html1 = "<html><body style = '"+style+"'>";
        String html2 =  "</body></html>";
        JTabbedPane tp = new JTabbedPane();
        tp.addTab(html1 + "Groups" + html2, new JLabel(style));
        tp.addTab(html1 + "Settings" + html2, new JLabel(style));
        tp.addTab(html1 + "About" + html2, new JLabel(style));

        gui.add(tp);

        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        f.setContentPane(gui);
        f.setMinimumSize(new Dimension(400,100));
        f.pack();
        f.setLocationByPlatform(true);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        Runnable r = new Runnable() {

            @Override
            public void run() {
                String[] css = {
                    "margin:0;background:#ffffff;",
                    "padding:10px;",
                    "width:110px;height:10px;border-radius:3px;"
                        + "text-align:center;border:none;"
                };
                showStyle(css[0]);
                showStyle(css[0]+css[1]);
                showStyle(css[0]+css[1]+css[2]);
            }
        };
        // Swing GUIs should be created and updated on the EDT
        // http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html
        SwingUtilities.invokeLater(r);
    }
}

另请参阅@whiskeyspider 建议重新 @trashgod 解决BG 颜色。比试图在 HTML 中强制它好得多(很多)。

于 2013-03-25T23:50:56.717 回答