如何使JFrame与具有透明背景的图像相同的形状?

时间:2016-03-21 11:35:04

标签: java swing netbeans-8

我是Java的初学者,使用NetBeans作为我的IDE ......

我正在尝试制作一个自定义形状JFrame,形状像我将创建的图像...我找到了解决方案herehere但我可以'弄清楚如何在Netbeans中应用它..

花了我几个小时的研究,但没有用。所以我在这里问它希望有人会启发我...我也希望你解释使用的代码和它是如何工作所以我也会学习并只是复制粘贴...

2 个答案:

答案 0 :(得分:1)

  

我也希望你解释一下使用的代码及其工作原理

这是教程的好处。阅读How to Create Translucent and Shaped Windows上Swing教程中的部分,了解相关信息和工作示例。

  

我无法弄清楚如何在Netbeans中应用它

请勿使用IDE生成代码。如果您曾经切换过IDE,那么您需要学习一个新的。而是花时间学习Java / Swing,而不是IDE。

答案 1 :(得分:0)

几个小时后,在阅读并观看了我发现的几个教程之后,玩了一下NetBeans,我终于得到了一个简单的解决方案......

以下是代码:

package testPack;

import java.awt.Color;
import javax.swing.*;
import java.awt.Dimension;

/**
 *
 * @author Karyuu Ouji
 */
public class TestPanel extends javax.swing.JPanel {

    /**
     * Creates new form TestPanel
     */
    public TestPanel() {

        initComponents();
        this.setPreferredSize(new Dimension(704,182));
        this.setOpaque(false);
        this.setDoubleBuffered(true);

    }

    /**
     * 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() {

        jButton1 = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();

        setLayout(null);

        jButton1.setText("Close");
        jButton1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                jButton1MouseReleased(evt);
            }
        });
        add(jButton1);
        jButton1.setBounds(593, 0, 110, 23);

        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/testPack/sao.png"))); // NOI18N
        jLabel1.setText("jLabel1");
        add(jLabel1);
        jLabel1.setBounds(0, 0, 704, 180);
    }// </editor-fold>                        

    private void jButton1MouseReleased(java.awt.event.MouseEvent evt) {                                       
        System.exit(0);
    }                                      

    public static void main(String[] args) {

        JFrame frmMain = new JFrame();
        frmMain.setUndecorated(true);
        frmMain.setBackground(new Color(0,0,0,0));
        frmMain.add(new TestPanel());
        frmMain.pack();
        frmMain.setLocationRelativeTo(null);
        frmMain.setVisible(true);

    }


    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    // End of variables declaration                   
}

注意:大多数代码都是由NetBeans生成的

我所做的只是从组件托盘中添加JLabel,并将JPanelJLabel的大小设置为与图片大小相同。

然后我通过JLabel属性在Icon中放置了图像。

Setting Icon/Image

这就是我运行应用程序时的样子。

Running

我希望将来会帮助像我这样的人...... :)