将不透明的 Jlabel 添加到透明 Jdialog



请运行代码,代码是使用拖放方法在netbeans中开发的,请帮助我......我想要的是将电源按钮显示为opaic,而JDialog的其余部分显示为opaic。

import javax.swing.ImageIcon;
public class quicklaunchApp extends java.awt.Dialog {
    int xMouse,yMouse;
    public quicklaunchApp(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
       this.setOpacity(0.3f);

       this.Buttonpower.setOpaque(false);
    }

    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {
        Buttonpower = new javax.swing.JLabel();
        Background = new javax.swing.JLabel();
        setMaximumSize(new java.awt.Dimension(380, 140));
        setMinimumSize(new java.awt.Dimension(380, 140));
        setUndecorated(true);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                closeDialog(evt);
            }
        });
        setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
        Buttonpower.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Button_default.png"))); // NOI18N
        Buttonpower.setToolTipText("");
        Buttonpower.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                ButtonpowerMouseClicked(evt);
            }
            public void mouseEntered(java.awt.event.MouseEvent evt) {
                ButtonpowerMouseEntered(evt);
            }
            public void mouseExited(java.awt.event.MouseEvent evt) {
                ButtonpowerMouseExited(evt);
            }
            public void mousePressed(java.awt.event.MouseEvent evt) {
                ButtonpowerMousePressed(evt);
            }
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                ButtonpowerMouseReleased(evt);
            }
        });
        add(Buttonpower, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 40, -1, -1));
        Background.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Background_default.png"))); // NOI18N
        Background.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseDragged(java.awt.event.MouseEvent evt) {
                BackgroundMouseDragged(evt);
            }
        });
        Background.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseEntered(java.awt.event.MouseEvent evt) {
                BackgroundMouseEntered(evt);
            }
            public void mouseExited(java.awt.event.MouseEvent evt) {
                BackgroundMouseExited(evt);
            }
            public void mousePressed(java.awt.event.MouseEvent evt) {
                BackgroundMousePressed(evt);
            }
        });
        add(Background, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 380, 140));
        pack();
    }// </editor-fold>                        

    private void closeDialog(java.awt.event.WindowEvent evt) {                             
        setVisible(false);
        dispose();
    }                            
    private void BackgroundMouseDragged(java.awt.event.MouseEvent evt) {                                        
      int x = evt.getXOnScreen();
      int y = evt.getYOnScreen();
      this.setLocation(x-xMouse, y-yMouse);
    }                                       
    private void BackgroundMousePressed(java.awt.event.MouseEvent evt) {                                        
      xMouse = evt.getX();
      yMouse = evt.getY();
    }                                       
    private void BackgroundMouseEntered(java.awt.event.MouseEvent evt) {                                        
    }                                       
    private void BackgroundMouseExited(java.awt.event.MouseEvent evt) {                                       

    }                                      
    private void ButtonpowerMouseEntered(java.awt.event.MouseEvent evt) {                                         
      ImageIcon II = new ImageIcon(getClass().getResource("Button_hover.png"));
      Buttonpower.setIcon(II);
    }                                        
    private void ButtonpowerMousePressed(java.awt.event.MouseEvent evt) {                                         
       ImageIcon II = new ImageIcon(getClass().getResource("Button_pressed.png"));
       Buttonpower.setIcon(II);
    }                                        
    private void ButtonpowerMouseClicked(java.awt.event.MouseEvent evt) {                                         
    }                                        
    private void ButtonpowerMouseReleased(java.awt.event.MouseEvent evt) {                                          
       ImageIcon II = new ImageIcon(getClass().getResource("Button_hover.png"));
       Buttonpower.setIcon(II);
    }                                         
    private void ButtonpowerMouseExited(java.awt.event.MouseEvent evt) {                                        
      ImageIcon II = new ImageIcon(getClass().getResource("Button_default.png"));
      Buttonpower.setIcon(II);

    }                                       

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                quicklaunchApp dialog = new quicklaunchApp(new java.awt.Frame(), true);
                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JLabel Background;
    private javax.swing.JLabel Buttonpower;
    // End of variables declaration                   
}

this.setOpacity(0.3f);更改为this.setBackground(new Color(0, 0, 0, 0));。 如果希望按钮不透明,请使用this.Buttonpower.setOpaque(true)

我还不鼓励您以这种方式使用JLabel,而是使用JButton,因为无论如何您基本上已经重新实现了基本功能。

像...

Buttonpower = new javax.swing.JButton("Stop this");
Buttonpower.setBorderPainted(false);
Buttonpower.setContentAreaFilled(false);
Buttonpower.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Button_default.png"))); // NOI18N
Buttonpower.setRolloverIcon(new ImageIcon(getClass().getResource("Button_hover.png")));
Buttonpower.setPressedIcon(new ImageIcon(getClass().getResource("Button_pressed.png")));
Buttonpower.setRolloverEnabled(true);

最新更新