How to create a JMenuBar with Glossy Colors?

 ̄綄美尐妖づ 提交于 2019-12-02 17:43:26

问题


I created a small Swing based application. For that I created a menu bar using JMenuBar class. But I want to apply glossy color for that menu bar.

In particular, I'm look at the effects seen here: a gradient color in the fifth example and an animation in the seventh.

My Code:

public class MenuBar extends javax.swing.JFrame {  /**  * Creates new form MenuBar  */ public MenuBar() {     initComponents(); }  /**  * 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.  */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">                           private void initComponents() {      jMenuBar1 = new javax.swing.JMenuBar();     jMenu1 = new javax.swing.JMenu();     jMenu2 = new javax.swing.JMenu();      setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);      jMenu1.setText("File");     jMenuBar1.add(jMenu1);      jMenu2.setText("Edit");     jMenuBar1.add(jMenu2);      setJMenuBar(jMenuBar1);      javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());     getContentPane().setLayout(layout);     layout.setHorizontalGroup(         layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)         .addGap(0, 400, Short.MAX_VALUE)     );     layout.setVerticalGroup(         layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)         .addGap(0, 279, Short.MAX_VALUE)     );      pack(); }// </editor-fold>                          /**  * @param args the command line arguments  */ public static void main(String args[]) {     /* Set the Nimbus look and feel */     //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">     /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.      * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html       */     try {         for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {             if ("Nimbus".equals(info.getName())) {                 javax.swing.UIManager.setLookAndFeel(info.getClassName());                 break;             }         }     } catch (ClassNotFoundException ex) {         java.util.logging.Logger.getLogger(MenuBar.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);     } catch (InstantiationException ex) {         java.util.logging.Logger.getLogger(MenuBar.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);     } catch (IllegalAccessException ex) {         java.util.logging.Logger.getLogger(MenuBar.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);     } catch (javax.swing.UnsupportedLookAndFeelException ex) {         java.util.logging.Logger.getLogger(MenuBar.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);     }     //</editor-fold>      /* Create and display the form */     java.awt.EventQueue.invokeLater(new Runnable() {         public void run() {             new MenuBar().setVisible(true);         }     }); }  // Variables declaration - do not modify                      private javax.swing.JMenu jMenu1; private javax.swing.JMenu jMenu2; private javax.swing.JMenuBar jMenuBar1; // End of variables declaration                    } 

回答1:


While your question is very broad, several points are worth mentioning:

  • As suggested here, support for CSS in Swing is limited; JavaFX may be an alternative.

  • In Swing, the appearance of a JMenuItem is controlled by its UI delegate, typically derived from BasicButtonUI; an example of applying a gradient is seen here.

  • Alternatively, add instances of JButton to a JToolBar, illustrated here; use the rollover property to change the button's icon as desired.

  • Create animated icons using a Swing Timer, as shown here.



来源:https://stackoverflow.com/questions/28956284/how-to-create-a-jmenubar-with-glossy-colors

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!