0

ツールバーで JToolbar と JButton を使用すると、Nimbus ルック アンド フィールに問題があります。金属を使用している場合、Nimbus だけで問題が発生し、ボタンが正しく表示されます。

ツールバーのボタンは、クリックまたはマウスオーバーされた場合にのみ表示され、Metal では標準で表示されます。私の問題または質問、この問題の解決策はありますか?

コード例:

ボタン: test、test1 はツールバーにあり、Visible ではなく、Button test2 はツールバーになく、通常のように見えます。ボタン テスト、test1 は、ツールバーにあるというだけで test2 のように見えます。

import java.awt.FlowLayout;

import javax.swing.*;

public class nimbus extends JFrame{

    public nimbus()
    {
        //setLook("javax.swing.plaf.metal.MetalLookAndFeel");
        setLook("javax.swing.plaf.nimbus.NimbusLookAndFeel");

        FlowLayout fl = new FlowLayout();
        fl.setAlignment(fl.LEFT); 

        this.setLayout(fl);
        this.setSize(100, 200);

        JToolBar tbar = new JToolBar();
        tbar.setLayout(fl);
        tbar.setSize(800, 40);
        tbar.setFloatable(false);

        JButton btn = new JButton("test");
        btn.setSize(50, 23);
        tbar.add(btn);

        btn = new JButton("test1");
        btn.setSize(50, 23);
        tbar.add(btn);

        this.add(tbar);

        btn = new JButton("test2");
        btn.setSize(50, 23);
        this.add(btn);
    }

    public static void main(String[] args){
        nimbus n = new nimbus();
        n.setVisible(true);
    }
    public void setLook(String look)
    {

        try {
            UIManager.setLookAndFeel(look);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InstantiationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (UnsupportedLookAndFeelException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
4

1 に答える 1