0

我对 java 的外观和感觉有疑问。

我在我的主要方法中使用以下代码将它设置为 Nimbus 皮肤:

public class Main
{
    public static void main(String[] args)
    {
        try
        {
            boolean found = false;
            for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels())
            {               
                if ("Nimbus".equals(info.getName()))
                {
                    UIManager.setLookAndFeel(info.getClassName());
                    found = true;
                    break;
                }
            }

            if (!found) UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            UIManager.put("AuditoryCues.playList", UIManager.get("AuditoryCues.allAuditoryCues"));
        }
        catch (Exception e) {}

        Manager mngr = new Manager();
        mngr.setSize(1000, 600);
        Utils.centerWindow(mngr);
        mngr.setVisible(true);
    }
}

它给了我这种窗户:

在此处输入图像描述

如您所见,JInternalFrames 已正确蒙皮,但主窗口未正确蒙皮!

我怎样才能将主题也应用到这个窗口?

谢谢。


Manager很简单JFrame,代码如下:

public class Manager extends JFrame
{
    public Manager()
    {
        initComponents();
    }

    private void initComponents()
    {
        setDefaultCloseOperation(3);
        setTitle("My window");
        setIconImage(ImageLoader.getIcon().getImage());

        // My components go here

        pack();
    }
}
4

3 回答 3

3
于 2012-04-20T13:44:01.357 回答
0

只需在创建框架/对话框之前尝试打开这两个选项:

JDialog.setDefaultLookAndFeelDecorated ( true );
JFrame.setDefaultLookAndFeelDecorated ( true );

这将允许 JFrame/JDialog 从 LaF 而不是系统获得装饰。

于 2012-04-20T16:49:20.617 回答
0

好吧,如果没有一个好的SSCCE ,我不知道该怎么做,但是如果你想要一个总是对我有用的方法的例子,你可以看看github上的Java-Helper 。具体来说,查看这一行的 SwingHelper 。我添加下面的代码是为了符合堆栈溢出的一些基本规则;)祝你好运。

  /**
   * Sets the look and feel to the given type (like "Nimbus") Learn more here:
   * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
   *
   * @param lookAndFeel to set (like "Nimbus")
   */
  public static void setLookAndFeel(String lookAndFeel) {
    try {
      for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
        if ((info.getName()).equals(lookAndFeel)) {
          javax.swing.UIManager.setLookAndFeel(info.getClassName());
          break;
        }
      }
    } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) {
      java.util.logging.Logger.getLogger(SwingHelper.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
  }
于 2012-04-20T16:27:28.670 回答