LookAndFeel选择JMenu

时间:2015-03-30 23:00:09

标签: java swing jmenu

我发布这个因为我真的很困惑。我的目标是创建一个包含所有已安装的LookandFeel的JMenu,此外,用户可以通过从此菜单中选择它来更改程序的主题。

我的意思是:我在大学的讲师向我展示了一段代码,该代码位于下面代码中的块注释之间。他在JComboBox中写了我想要的东西。甚至可以用JMenu写这样的东西吗?我通过编写块注释下面的代码尝试了一些技巧,但它甚至没有列出LookandFeels。

因为它只是在包含main()的类之外定义的许多类中的一个,所以请随意编写任何必要的代码,如.setVisible或类似的东西。

提前致谢

import javax.swing.*;

import java.util.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Menu extends JFrame
{
private JMenuBar test = new JMenuBar();
private JMenu LnF = new JMenu("LnF");

public Menu() throws HeadlessException
{
    final UIManager.LookAndFeelInfo[] installedLF = UIManager.getInstalledLookAndFeels();

    String[] installedLookandFeelsNames = new String[installedLF.length];

          for (int i = 0; i < installedLF.length; i++) 
          {
            installedLookandFeelsNames[i] = installedLF[i].getName();
            System.out.println("  " + installedLF[i].getClassName() );
          }

    /*final JComboBox chooseLFComboBox = new JComboBox(installedLookandFeelsNames);
    chooseLFComboBox.setSelectedItem(UIManager.getLookAndFeel().getName());

    chooseLFComboBox.addActionListener(new ActionListener() 
    {
        public void actionPerformed(ActionEvent e) 
        {
            try
            {
                int selectedLFIndex = chooseLFComboBox.getSelectedIndex();
                UIManager.setLookAndFeel (installedLF[selectedLFIndex].getClassName());
                SwingUtilities.updateComponentTreeUI(Menu.this);
                Menu.this.pack();
            }
            catch (Exception e1)
            {
                e1.printStackTrace();
                JOptionPane.showMessageDialog(Menu.this, "Błąd podczas zmiany LF");
            }
        }
    }
    );

    add(chooseLFComboBox);*/

    JMenuItem[] temp = new JMenuItem[5];

    for(int i = 0; i < installedLookandFeelsNames.length; i++)
    {
        temp[i] = new JMenuItem(installedLookandFeelsNames[i]);
        LnF.add(temp[i]);
    }

    test.add(LnF);
    add(test);
}
}

0 个答案:

没有答案