2012-05-24 2 views
0

Мне интересно, может ли кто-нибудь придумать обход для следующего макета вопроса, который у меня есть с внешним видом Nimbus.JButton не отображается в JToolBar при использовании Nimbus look-and-feel

Проблема в том, что кнопка на панели инструментов не видна, так как диспетчер макетов 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); 
      } 
     }); 
    } 
} 

Любые предложения приветствуются.

+0

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

ответ

2

расположение по умолчанию для JToolBar в нимб:

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

Вы должны установить его:

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

Единственные проблемы с этим подходом заключаются в том, что (1) дескриптор панели инструментов исчезает (когда он плавает), и (2) вам также нужно поменять местами на Y_AXIS, когда панель инструментов перетаскивается вертикально. Но поскольку моя панель инструментов не плавает, это не влияет на меня. Спасибо за обход. – lifelongcoug

Смежные вопросы