【问题标题】:Java Swing GUI, customising JtabbedPane styleJava Swing GUI,自定义 JtabbedPane 样式
【发布时间】:2013-03-15 09:14:42
【问题描述】:

我是挥杆初学者。我尝试为我的项目创建一个选项卡式窗口作为 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);
    }
}

【问题讨论】:

  • 这种影响很可能是由tabButtonCss引起的。
  • 请参阅此处以获得更清洁的解决方案:stackoverflow.com/questions/8752037/…
  • 如需尽快获得更好的帮助,请发帖SSCCE
  • @whiskeyspider 这个建议太好了,我不得不“窃取”图像并在答案中使用它(当然还有归属/链接)。

标签: java css swing


【解决方案1】:

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

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 color 建议。比在 HTML 中强制执行要好得多(很多)。

【讨论】:

  • 这真的很有帮助...但是关于边距的问题仍然存在:(...
  • 我在trashgod 的示例中没有看到“问题边界”。用它作为颜色。
猜你喜欢
  • 1970-01-01
  • 2019-04-04
  • 2014-05-05
  • 1970-01-01
  • 1970-01-01
  • 2011-07-16
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
相关资源
最近更新 更多