如下是关于swing 透明度的一些想法,请问怎么实现?求指点

最大的方形假如是屏幕,然后次小的方形是我的frame,里边有一个圆形 ,圆形是图片,现在想要实现除了圆形图片,在这个frame中得其他地方都透明(可以看到桌面)

德玛西亚99
浏览 90回答 1
1回答

ITMISS

import&nbsp;java.awt.BorderLayout;&nbsp;&nbsp;import&nbsp;java.awt.Color;&nbsp;&nbsp;import&nbsp;java.awt.Dimension;&nbsp;&nbsp;import&nbsp;java.awt.Graphics;&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;javax.swing.JFrame;&nbsp;&nbsp;import&nbsp;javax.swing.JPanel;&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;com.sun.jna.platform.WindowUtils;&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;&nbsp;*&nbsp;Transparent&nbsp;JFrame&nbsp;use&nbsp;JNA&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;*&nbsp;@author&nbsp;ruislan&nbsp;<a&nbsp;href="mailto:z17520@126.com"/>&nbsp;&nbsp;*&nbsp;@version&nbsp;0.1.0&nbsp;&nbsp;*/&nbsp;&nbsp;public&nbsp;class&nbsp;TransparentFrame&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;class&nbsp;Canvas&nbsp;extends&nbsp;JPanel&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;void&nbsp;paintComponent(Graphics&nbsp;g)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(g&nbsp;!=&nbsp;null)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.setColor(Color.black);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.fillOval(0,&nbsp;0,&nbsp;this.getWidth(),&nbsp;this.getHeight());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.setProperty("sun.java2d.noddraw",&nbsp;"true");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JFrame&nbsp;frame&nbsp;=&nbsp;new&nbsp;JFrame();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WindowUtils.setWindowAlpha(frame,&nbsp;0.5f);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Canvas&nbsp;c&nbsp;=&nbsp;new&nbsp;Canvas();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.setPreferredSize(new&nbsp;Dimension(300,&nbsp;300));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.setSize(300,&nbsp;300);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JPanel&nbsp;panel&nbsp;=&nbsp;new&nbsp;JPanel();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;panel.add(c);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.add(panel,&nbsp;BorderLayout.CENTER);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.setSize(600,&nbsp;600);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.setVisible(true);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.setResizable(false);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP