2012-05-24 1 views
0

Je me demande si quelqu'un peut trouver une solution au problème de mise en page suivant que j'ai avec le look-and-feel Nimbus.JButton non visible dans JToolBar lors de l'utilisation de l'apparence Nimbus

Le problème est que le bouton de la barre d'outils n'est pas visible car le gestionnaire de disposition JToolBar ne prend pas correctement en compte la largeur du JTextField. Le look-and-feel Metal ne semble pas présenter ce bug.

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); 
      } 
     }); 
    } 
} 

Toutes les suggestions sont appréciées.

+0

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7171632 – lifelongcoug

Répondre

2

La mise en page par défaut pour JToolBar dans Nimbus est:

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

Vous devriez le mettre:

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

Les seuls problèmes avec cette approche sont que (1) la poignée de la barre d'outils disparaît (quand elle est flottante), et (2) vous devez également permuter à Y_AXIS lorsque la barre d'outils est traînée pour être verticale. Mais comme ma barre d'outils n'est pas flottante, elle ne me touche pas. Merci pour le travail. – lifelongcoug