在Nimbus外观中的JTabbedPane左侧对齐图标

时间:2013-11-05 10:47:07

标签: java swing user-interface jtabbedpane nimbus

我正在使用Nimbus外观创建一个JTabbedPane的应用程序

我已使用此代码放置标签:

pane.addTab("Welcome",new ImageIcon("resources\\1.png"),mainPanel,"Takes to the welcome page");

我希望图标显示在左侧

screenshot of the application

2 个答案:

答案 0 :(得分:8)

您可以通过JTabbedPane.setTabComponentAt(int index, Component component)方法设置自定义组件以呈现标签标题:

  

设置负责呈现标题的组件   指定标签。空值表示JTabbedPane将呈现标题   和/或指定选项卡的图标。非空值表示   组件将呈现标题,JTabbedPane将不呈现标题   标题和/或图标。

     

注意:组件不能是开发人员已经拥有的组件   添加到选项卡式窗格。

例如,你可以这样做:

JLabel label = new JLabel("Tab1");
label.setHorizontalTextPosition(JLabel.TRAILING); // Set the text position regarding its icon
label.setIcon(UIManager.getIcon("OptionPane.informationIcon"));

JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.LEFT);
tabbedPane.addTab(null, new JPanel());
tabbedPane.setTabComponentAt(0, label); // Here set the custom tab component

屏幕截图1:

enter image description here


注意:使用此功能,您可以根据需要设置任何Component。例如,您可以使用JPanel制作JButton来关闭标签:

final JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.LEFT);

ActionListener actionListener = new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        JButton button = (JButton)e.getSource();
        for(int i = 0; i < tabbedPane.getTabCount(); i++) {
            if(SwingUtilities.isDescendingFrom(button, tabbedPane.getTabComponentAt(i))) {
                tabbedPane.remove(i);
                break;
            }
        }
    }
};

JLabel label = new JLabel("Tab1", UIManager.getIcon("OptionPane.informationIcon"), JLabel.RIGHT);        
JButton closeButton = new JButton("X");
closeButton.addActionListener(actionListener);

JPanel tabComponent = new JPanel(new BorderLayout());
tabComponent.add(label, BorderLayout.WEST);
tabComponent.add(closeButton, BorderLayout.EAST);

tabbedPane.addTab(null, new JPanel());
tabbedPane.setTabComponentAt(0, tabComponent); // Here set the custom tab component

屏幕截图2:

enter image description here


更新

您可能也希望看到此主题:JTabbedPane: tab placement set to LEFT but icons are not aligned

答案 1 :(得分:0)

使用HTML格式有一个更简单的解决方案。 这是一个使用html代码格式化文本的示例,但您也可以格式化选项卡中的其他元素:

 mongoose.connect('mongodb://localhost:27017/newDB', function(err,db){
    if(!err){
        acl = new acl(new acl.mongodbBackend(mongoose.connection.db, 'acl_'));
        acl.allow('guest', 'business', 'view');

        console.log(acl);
        var cursor = db.collection('record').find({ip: ipAddress, filename_full: filename});
        cursor.each(function (err, doc) {
            assert.equal(err, null);
            if (doc != null) {
                console.dir(doc);
            } else {
                console.log("Not found");
                callback();
            }
        });*/

        }
});