使用Nimbus外观时,JButton在JToolBar中不可见

时间:2012-05-24 21:47:09

标签: java swing nimbus jtoolbar

我想知道是否有人可以针对以下Nimbus外观的布局问题进行解决。

问题是工具栏中的按钮不可见,因为JToolBar布局管理器未正确考虑JTextField的宽度。 Metal外观似乎没有表现出这个错误。

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

public class TextFieldTest extends JFrame
{
    public TextFieldTest()
    {
        // Create the text field
        JTextField textField = new JTextField( 20 )
        {
            @Override
            public Dimension getMaximumSize()
            {
                return super.getPreferredSize();
            }
        };

        // Create the tool bar
        JToolBar toolBar = new JToolBar();
        toolBar.add( textField );
        toolBar.add( Box.createHorizontalGlue() );
        toolBar.add( new JButton( "Button" ) );

        // Layout the frame
        getContentPane().setLayout( new BorderLayout() );
        getContentPane().add( toolBar, BorderLayout.NORTH );
        setPreferredSize( new Dimension( 800, 600 ) );
        pack();
    }

    public static void main( String[] args )
    {
        SwingUtilities.invokeLater( new Runnable()
        {
            public void run()
            {
                TextFieldTest test = new TextFieldTest();
                test.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
                test.setVisible( true );
            }
        } );
    }
}

任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:2)

Nimbus中JToolBar的默认布局是:

class javax.swing.plaf.synth.SynthToolBarUI$SynthToolBarLayoutManager

你应该设置它:

    toolBar.setLayout(new BoxLayout(toolBar, BoxLayout.X_AXIS));