substanc对swing的灵活换肤

/*
 * LookFeelJInternalFrame.java
 *
 */

package alljava;
import javax.swing.*;
import  java.util.jar.*;
import java.util.*;
/**
 *本例程实现能过substanc挂接实现对swing的灵活换肤
 */
public class LookFeelJInternalFrame extends javax.swing.JInternalFrame {
   
static LookFeelJInternalFrame lookFeelWindow=null;
   
    public static void main(String args[]){
      JFrame.setDefaultLookAndFeelDecorated(true);
        openLookFeelWindow();
       
       
    }
   
     public static void  openLookFeelWindow(){
        if (lookFeelWindow == null){
              javax.swing.JFrame jf=new JFrame("NetJava.org换肤演示");
      
        jf.pack();
            lookFeelWindow = new LookFeelJInternalFrame();
            jf.add(lookFeelWindow);
            jf.setVisible(true);
             jf.setSize(800,600);
        }
        lookFeelWindow.pack();
        lookFeelWindow.setVisible(true);
        lookFeelWindow.show();
        lookFeelWindow.moveToFront();
        lookFeelWindow.requestFocus();
        try{
            lookFeelWindow.setSelected(true);
        }catch ( java.beans.PropertyVetoException e){
           System.out.println("open error: "+e);
        }
    }
   
    /** Creates new form LookFeelJInternalFrame */
    public LookFeelJInternalFrame() {
            initComponents();
            //加入titlePainter
             listTitlePainter.add("org.jvnet.substance.title.ClassicTitlePainter");
             listTitlePainter.add("org.jvnet.substance.title.Glass3DTitlePainter");
             listTitlePainter.add("org.jvnet.substance.title.RandomCubesTitlePainter");
            try{
                //加入sun的lookfeel
                  listJava.add("javax.swing.plaf.metal.MetalLookAndFeel");
                  listJava.add("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
                  listJava.add("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
                  listJava.add("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");

 initSubstanceLookFeel();
jComboBoxJavaSkin.setModel(new javax.swing.DefaultComboBoxModel(listJava.toArray()));
jComboBox2SubSkin.setModel(new javax.swing.DefaultComboBoxModel(listSkin.toArray()));
jComboBoxSubTheme.setModel(new javax.swing.DefaultComboBoxModel(listTheme.toArray()));
jComboBoxSubLookFeel.setModel(new javax.swing.DefaultComboBoxModel(listLookAndFeel.toArray()));
jComboBoxMark.setModel(new javax.swing.DefaultComboBoxModel(listTitleWatermark.toArray()));
jListGradientPainter.setListData(listGradientPainter.toArray());

 }catch(Exception ef){
                  ef.printStackTrace();
            System.out.println("create Look Feel error: "+ef);
        }  
    }
   

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">                         
    private void initComponents() {
        buttonGroup1 = new javax.swing.ButtonGroup();
        jComboBoxJavaSkin = new javax.swing.JComboBox();
        jLabel1 = new javax.swing.JLabel();
        jComboBox2SubSkin = new javax.swing.JComboBox();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jComboBoxSubTheme = new javax.swing.JComboBox();
        jLabel4 = new javax.swing.JLabel();
        jComboBoxSubLookFeel = new javax.swing.JComboBox();
        jLabel5 = new javax.swing.JLabel();
        jSeparator1 = new javax.swing.JSeparator();
        jRadioButton1 = new javax.swing.JRadioButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jListGradientPainter = new javax.swing.JList();
        jLabel6 = new javax.swing.JLabel();
        jRadioButton2 = new javax.swing.JRadioButton();
        jRadioButton3 = new javax.swing.JRadioButton();
        jLabel7 = new javax.swing.JLabel();
        jLabel8 = new javax.swing.JLabel();
        jComboBoxMark = new javax.swing.JComboBox();
        jPanel1 = new javax.swing.JPanel();
        jSliderWaterMark = new javax.swing.JSlider();
        jTextField1 = new javax.swing.JTextField();
        jCheckBox1 = new javax.swing.JCheckBox();
        jButton1 = new javax.swing.JButton();

        setBorder(javax.swing.BorderFactory.createMatteBorder(1, 2, 1, 2, new java.awt.Color(0, 0, 0)));
        setClosable(true);
        setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE);
        setTitle("/u9009/u62e9/u6362/u80a4");
        jComboBoxJavaSkin.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        jComboBoxJavaSkin.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jComboBoxJavaSkinActionPerformed(evt);
            }
        });

        jLabel1.setText("JDK/u9009/u9879/uff1a");

        jComboBox2SubSkin.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        jComboBox2SubSkin.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jComboBox2SubSkinActionPerformed(evt);
            }
        });

        jLabel2.setText("Substance/u9009/u9879/uff1a");

        jLabel3.setText("Skin /uff1a");

        jComboBoxSubTheme.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        jComboBoxSubTheme.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jComboBoxSubThemeActionPerformed(evt);
            }
        });

        jLabel4.setText("Theme /uff1a");

        jComboBoxSubLookFeel.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        jComboBoxSubLookFeel.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jComboBoxSubLookFeelActionPerformed(evt);
            }
        });

        jLabel5.setText("Look Feel/uff1a");

        buttonGroup1.add(jRadioButton1);
        jRadioButton1.setText("ClassicTitlePainter");
        jRadioButton1.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jRadioButton1.setMargin(new java.awt.Insets(0, 0, 0, 0));
        jRadioButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRadioButton1ActionPerformed(evt);
            }
        });

        jListGradientPainter.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
        jListGradientPainter.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        jListGradientPainter.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        jListGradientPainter.setDoubleBuffered(true);
        jListGradientPainter.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
                jListGradientPainterValueChanged(evt);
            }
        });
        jListGradientPainter.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jListGradientPainterMouseClicked(evt);
            }
        });

        jScrollPane1.setViewportView(jListGradientPainter);

        jLabel6.setText("Title Painter/uff1a");

        buttonGroup1.add(jRadioButton2);
        jRadioButton2.setText("Glass3DTitlePainter");
        jRadioButton2.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jRadioButton2.setMargin(new java.awt.Insets(0, 0, 0, 0));
        jRadioButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRadioButton2ActionPerformed(evt);
            }
        });

        buttonGroup1.add(jRadioButton3);
        jRadioButton3.setText("RandomCubesTitlePainter");
        jRadioButton3.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jRadioButton3.setMargin(new java.awt.Insets(0, 0, 0, 0));
        jRadioButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRadioButton3ActionPerformed(evt);
            }
        });

        jLabel7.setText("Gradient/uff1a");

        jLabel8.setText("Watermark/uff1a");

        jComboBoxMark.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        jComboBoxMark.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jComboBoxMarkActionPerformed(evt);
            }
        });

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Test"));
        jSliderWaterMark.setMajorTickSpacing(1);
        jSliderWaterMark.setMaximum(10);
        jSliderWaterMark.setPaintLabels(true);
        jSliderWaterMark.setPaintTicks(true);
        jSliderWaterMark.setValue(0);
        jSliderWaterMark.setAutoscrolls(true);
        jSliderWaterMark.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseDragged(java.awt.event.MouseEvent evt) {
                jSliderWaterMarkMouseDragged(evt);
            }
        });
        jSliderWaterMark.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                jSliderWaterMarkStateChanged(evt);
            }
        });
        jSliderWaterMark.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jSliderWaterMarkMouseClicked(evt);
            }
            public void mouseEntered(java.awt.event.MouseEvent evt) {
                jSliderWaterMarkMouseEntered(evt);
            }
        });
        jSliderWaterMark.addVetoableChangeListener(new java.beans.VetoableChangeListener() {
            public void vetoableChange(java.beans.PropertyChangeEvent evt)throws java.beans.PropertyVetoException {
                jSliderWaterMarkVetoableChange(evt);
            }
        });

        jTextField1.setText("www.NetJava.org");

        jCheckBox1.setText("jCheckBox1");
        jCheckBox1.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBox1.setMargin(new java.awt.Insets(0, 0, 0, 0));

        jButton1.setText("jButton1");

        org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(jSliderWaterMark, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 170, Short.MAX_VALUE)
                    .add(jCheckBox1)
                    .add(jButton1)
                    .add(jTextField1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 170, Short.MAX_VALUE))
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .add(jCheckBox1)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jButton1)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jTextField1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 17, Short.MAX_VALUE)
                .add(jSliderWaterMark, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 47, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(layout.createSequentialGroup()
                        .add(37, 37, 37)
                        .add(jLabel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 66, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                        .add(12, 12, 12)
                        .add(jComboBoxJavaSkin, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 356, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED))
                    .add(layout.createSequentialGroup()
                        .add(32, 32, 32)
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(jSeparator1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 439, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                            .add(layout.createSequentialGroup()
                                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                                    .add(layout.createSequentialGroup()
                                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                                            .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                                                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                                                    .add(jLabel5)
                                                    .add(jLabel4)
                                                    .add(jLabel3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 63, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                                                .add(jLabel8))
                                            .add(jLabel7))
                                        .add(13, 13, 13)
                                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                                            .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 361, Short.MAX_VALUE)
                                            .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
                                                .add(3, 3, 3)
                                                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                                                    .add(jComboBox2SubSkin, 0, 358, Short.MAX_VALUE)
                                                    .add(jComboBoxSubTheme, 0, 358, Short.MAX_VALUE)
                                                    .add(jComboBoxSubLookFeel, 0, 358, Short.MAX_VALUE)))
                                            .add(jComboBoxMark, 0, 361, Short.MAX_VALUE))
                                        .add(12, 12, 12))
                                    .add(layout.createSequentialGroup()
                                        .add(jLabel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 120, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 320, Short.MAX_VALUE)))
                                .add(5, 5, 5)))))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(jLabel6)
                    .add(layout.createSequentialGroup()
                        .add(10, 10, 10)
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(jPanel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                            .add(jRadioButton1)
                            .add(jRadioButton2)
                            .add(jRadioButton3))))
                .add(29, 29, 29))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .addContainerGap()
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(jLabel1)
                    .add(jComboBoxJavaSkin, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .add(16, 16, 16)
                .add(jSeparator1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 10, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel2)
                    .add(jLabel6))
                .add(14, 14, 14)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(layout.createSequentialGroup()
                        .add(jComboBoxSubLookFeel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                        .add(17, 17, 17)
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                            .add(jComboBox2SubSkin, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                            .add(jLabel3)))
                    .add(jLabel5)
                    .add(layout.createSequentialGroup()
                        .add(jRadioButton1)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(jRadioButton2)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(jRadioButton3)))
                .add(14, 14, 14)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
                    .add(layout.createSequentialGroup()
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(jComboBoxSubTheme, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                            .add(jLabel4))
                        .add(24, 24, 24)
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 78, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                            .add(jLabel7))
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 38, Short.MAX_VALUE)
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                            .add(jComboBoxMark, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                            .add(jLabel8)))
                    .add(jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .add(34, 34, 34))
        );
        pack();
    }// </editor-fold>                       

    //select Mark:
    private void jComboBoxMarkActionPerformed(java.awt.event.ActionEvent evt) {                                             
// TODO add your handling code here:
       
   // org.jvnet.substance.watermark.SubstanceImageWatermark.setOpacity(0.9f);
      //  org.jvnet.substance.SubstanceLookAndFeel.setCurrentWatermark("org.jvnet.substance.watermark.SubstanceImageWatermark");
         org.jvnet.substance.SubstanceLookAndFeel.setCurrentWatermark((String)jComboBoxMark.getSelectedItem());
         forRePaint();
    }                                            

    private void jSliderWaterMarkMouseEntered(java.awt.event.MouseEvent evt) {                                             
// TODO add your handling code here:
    }                                            

    private void jSliderWaterMarkMouseClicked(java.awt.event.MouseEvent evt) {                                             
// TODO add your handling code here:
    }                                            

    
    private void jSliderWaterMarkMouseDragged(java.awt.event.MouseEvent evt) {                                             
// TODO add your handling code here:

    }                                            

    private void jSliderWaterMarkVetoableChange(java.beans.PropertyChangeEvent evt)throws java.beans.PropertyVetoException {                                               
        
    }                                              
 
  
    private void jSliderWaterMarkStateChanged(javax.swing.event.ChangeEvent evt) {                                             
// TODO add your handling code here:
     // System.out.println("current is: "+jSliderWaterMark.getValue());
      jButton1.setText("Is: "+jSliderWaterMark.getValue());
    }                                            

    private void jListGradientPainterMouseClicked(java.awt.event.MouseEvent evt) {                                                 
// TODO add your handling code here:
    }                                                

    private void jRadioButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                             
// TODO add your handling code here:
 
          org.jvnet.substance.SubstanceLookAndFeel.setCurrentTitlePainter(listTitlePainter.get(2).toString());
             forRePaint();
     
    }                                            

    private void jRadioButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                             
// TODO add your handling code here:
          org.jvnet.substance.SubstanceLookAndFeel.setCurrentTitlePainter(listTitlePainter.get(1).toString());
          forRePaint();
    }                                            

    private void jRadioButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                             
// TODO add your handling code here:
        
          org.jvnet.substance.SubstanceLookAndFeel.setCurrentTitlePainter(listTitlePainter.get(0).toString());
        forRePaint();
    }                                            

    private void jListGradientPainterValueChanged(javax.swing.event.ListSelectionEvent evt) {                                                 
// TODO add your handling code here:
        org.jvnet.substance.SubstanceLookAndFeel.setCurrentGradientPainter(jListGradientPainter.getSelectedValue().toString());
           forRePaint();
    }                                                
   
 
    private void jComboBoxSubLookFeelActionPerformed(java.awt.event.ActionEvent evt) {                                                    
// TODO add your handling code here:
        try{

            UIManager.setLookAndFeel((String)jComboBoxSubLookFeel.getSelectedItem());
          //    UIManager.setLookAndFeel("org.jvnet.substance.SubstanceLookAndFeel");
         //   org.jvnet.substance.SubstanceLookAndFeel.setCurrentWatermark("org.jvnet.substance.watermark.SubstanceImageWatermark");
        }catch(Exception ef){
             ef.printStackTrace();
             JOptionPane.showMessageDialog(this, "第三方库换肤失败!"+ef.getMessage(), "错误!", JOptionPane.ERROR_MESSAGE);
        }
          forRePaint();
    }                                                   

    private void jComboBoxSubThemeActionPerformed(java.awt.event.ActionEvent evt) {                                                 
// TODO add your handling code here:
         org.jvnet.substance.SubstanceLookAndFeel.setCurrentTheme((String)jComboBoxSubTheme.getSelectedItem());   
          forRePaint();
    }                                                

    private void jComboBox2SubSkinActionPerformed(java.awt.event.ActionEvent evt) {                                                 
// TODO add your handling code here:
       org.jvnet.substance.SubstanceLookAndFeel.setSkin((String)jComboBox2SubSkin.getSelectedItem());
       forRePaint();
    }                                                
//选择了java lookFeel:
    private void jComboBoxJavaSkinActionPerformed(java.awt.event.ActionEvent evt) {                                                 
// TODO add your handling code here:
        String tems=(String)jComboBoxJavaSkin.getSelectedItem();
        tems.trim();
        try{
        UIManager.setLookAndFeel(tems);
        forRePaint();
        }catch(Exception ef){
            ef.printStackTrace();
             JOptionPane.showMessageDialog(this, "JDK换肤失败!"+ef.getMessage(), "错误!", JOptionPane.ERROR_MESSAGE);
        }
    }                                                

   
    public void forRePaint(){
//        org.jvnet.substance.watermark.SubstanceFabricWatermark;
//     org.jvnet.substance.SubstanceLookAndFeel.setCurrentWatermark( )
     
       SwingUtilities.updateComponentTreeUI(this.getParent());
    }
   
     public  void  initSubstanceLookFeel(){
        try{
        java.util.jar.JarFile jf=new JarFile("E://substance.jar");
        java.util.Enumeration<JarEntry>  em= jf.entries();
        while(em.hasMoreElements()){
          java.util.jar.JarEntry jre=em.nextElement();
         String tems=jre.toString();
         if(tems.startsWith("org/jvnet/substance/skin/")&&tems.endsWith("Skin.class")){
              tems=replace(tems,".class","").trim();
               tems=replace(tems,"/",".");
             listSkin.add(tems);
            // System.out.println("Skin ****: "+tems);
         }
          if(tems.startsWith("org/jvnet/substance/skin/")&&tems.endsWith("LookAndFeel.class")){
              tems=replace(tems,".class","").trim();
               tems=replace(tems,"/",".");
             listLookAndFeel.add(tems);
          //   System.out.println("LookAndFeel----: "+tems);
         }
          if(tems.startsWith("org/jvnet/substance/theme/")&&tems.endsWith("Theme.class")){
             tems=replace(tems,".class","").trim();
              tems=replace(tems,"/",".");
             listTheme.add(tems);
          //   System.out.println("Theme > > >: "+tems);
         }
          if(tems.startsWith("org/jvnet/substance/painter/")&&tems.endsWith("GradientPainter.class")){
             tems=replace(tems,".class","").trim();
              tems=replace(tems,"/",".");
              listGradientPainter.add(tems);
          //   System.out.println("Theme > > >: "+tems);
         }
         if(tems.startsWith("org/jvnet/substance/watermark/")&&tems.endsWith("Watermark.class")){
             tems=replace(tems,".class","").trim();
              tems=replace(tems,"/",".");
              listTitleWatermark.add(tems);
          //   System.out.println("Theme > > >: "+tems);
         }
      }
        }catch(Exception ef){
         JOptionPane.showMessageDialog(this, "无法找到换肤库!"+ef.getMessage(), "错误!", JOptionPane.ERROR_MESSAGE);
       dispose();//关掉
        }
    }
   
    
     static String   replace(java.lang.String strSource,
                            java.lang.String strFrom,
                            java.lang.String strTo) {
       java.lang.String strDest = "";
       int intFromLen = strFrom.length();
       int intPos;
       while ( (intPos = strSource.indexOf(strFrom)) != -1) {
         strDest = strDest + strSource.substring(0, intPos);
         strDest = strDest + strTo;
         strSource = strSource.substring(intPos + intFromLen);
       }
       strDest = strDest + strSource;

       return strDest;
  }

    private static List<String>  listTheme=new     ArrayList();
    private static List<String>  listLookAndFeel=new     ArrayList();
    private static List<String>  listSkin=new     ArrayList();
    private static List<String>  listGradientPainter=new     ArrayList();
    private static List<String>  listTitlePainter=new     ArrayList();
     private static List<String>  listTitleWatermark=new     ArrayList();
 
       private static List<String>  listJava=new     ArrayList();
    // 变量声明 - 不进行修改                    
    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.JButton jButton1;
    private javax.swing.JCheckBox jCheckBox1;
    private javax.swing.JComboBox jComboBox2SubSkin;
    private javax.swing.JComboBox jComboBoxJavaSkin;
    private javax.swing.JComboBox jComboBoxMark;
    private javax.swing.JComboBox jComboBoxSubLookFeel;
    private javax.swing.JComboBox jComboBoxSubTheme;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JList jListGradientPainter;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JRadioButton jRadioButton1;
    private javax.swing.JRadioButton jRadioButton2;
    private javax.swing.JRadioButton jRadioButton3;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JSlider jSliderWaterMark;
    private javax.swing.JTextField jTextField1;
    // 变量声明结束                  
   
}
 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值