鑷繁鍐欏師鐢熶唬鐮佹槸鍙曠殑錛岀壒鍒槸瀵規垜榪欑鍙煡閬揓ava鐨勫鉤鍑$▼搴忓憳錛屾墍浠ユ垜浠緱鍊熷姪涓涓潪甯告柟渚跨殑璺ㄥ鉤鍙扮殑璋冪敤OS function鏂逛究鐨凩ib錛孞NA渚挎槸鏈浣抽夋嫨錛堥偅涓皝錛岃繖閲屼笉鏄璁篔Ruby&JPython鐨勶級銆?br />
so, all robots, transform!
涓嬮潰鎴戜滑瑕佸仛涓涓晫闈㈡槸鍦嗚鍥涜竟褰㈢殑錛屼腑闂存湁涓涓粦鍔ㄦ潯鏉ユ粦鍔ㄨ皟鑺傞忔槑搴︺傚厛鐪嬬湅鍋氬ソ鐨勬埅鍥俱?br />

娉ㄦ剰鍥句腑鐨凧Frame杈硅宸茬粡鍙樻垚浜嗗渾寮э紝婊戝姩婊戝潡錛孞Frame寮濮嬮忔槑錛屾闈㈢殑鍥炬爣鏄劇幇鍑烘潵錛屼笅闈㈡槸浠g爜銆?br />
/**
* @(#)TransparentFrame.java v0.1.0 2007-10-21
*/
package ruislan.rswing.test;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.RoundRectangle2D;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.border.LineBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import com.sun.jna.examples.WindowUtils;
/**
* Transparent JFrame use JNA
*
* @author ruislan <a href="mailto:z17520@126.com"/>
* @version 0.1.0
*/
public class TransparentFrame {
private JFrame frame;
private JPanel container;
private JSlider slider;
private JPanel titleBar;
private JLabel titleLabel;
private JButton closeButton;
public static void main(String[] args) {
new TransparentFrame().launch();
}
private void launch() {
createUI();
launchUI();
}
protected void launchUI() {
frame.setVisible(true);
}
protected void createUI() {
System.setProperty("sun.java2d.noddraw", "true");
frame = new JFrame();
frame.setSize(200, 150);
frame.setAlwaysOnTop(true);
frame.setUndecorated(true);
container = new JPanel();
frame.setContentPane(container);
container.setLayout(new BorderLayout());
container.add(new JLabel("Ubunto vs Vista, I like both."),
BorderLayout.CENTER);
container.setBorder(new LineBorder(Color.BLACK));
titleBar = new JPanel();
titleBar.setLayout(new BorderLayout());
titleLabel = new JLabel("JNA is great!");
titleBar.add(titleLabel, BorderLayout.CENTER);
titleBar.setBorder(new LineBorder(Color.GRAY));
closeButton = new JButton("X");
closeButton.setFocusPainted(false);
closeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
titleBar.add(closeButton, BorderLayout.EAST);
container.add(titleBar, BorderLayout.NORTH);
slider = new JSlider(0, 100);
slider.setValue(100);
slider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
float value = slider.getValue();
WindowUtils.setWindowAlpha(frame, value * 0.01f);
}
});
container.add(slider, BorderLayout.SOUTH);
RoundRectangle2D.Float mask = new RoundRectangle2D.Float(0, 0, frame
.getWidth(), frame.getHeight(), 20, 20);
WindowUtils.setWindowMask(frame, mask);
centerWindow(frame);
}
public static void centerWindow(Container window) {
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
int w = window.getSize().width;
int h = window.getSize().height;
int x = (dim.width - w) / 2;
int y = (dim.height - h) / 2;
window.setLocation(x, y);
}
}
鍒╃敤JNA鏉ュ埗浣滈忔槑鏁堟灉闈炲父綆鍗曪紝鍙渶瑕佽皟鐢?span style="color: #000000;">WindowUtils.setWindowAlpha(window, alpha)灝卞彲浠ヤ簡銆傚綋鐒惰繖鏄疛NA鐗瑰埆涓篣I鍐欑殑宸ュ叿浠g爜銆傚鏋滆鏀瑰彉褰㈢姸錛岀敤WindowUtils.setWindowMask(window, shape)鎴栬匴indowUtils.setWindowMask(window, icon)灝卞彲浠ヤ簡錛屼絾鏄娉ㄦ剰涓鐐瑰繀欏昏緗?/span>System.setProperty("sun.java2d.noddraw", "true")錛屽惁鍒橨NA浼氬憡璇変綘榪欎釜紼嬪簭涓嶆敮鎸侀忔槑銆傚綋鐒惰榪愯璧鋒潵錛岃繕寰楅渶瑕佷袱涓狫ar錛?a title="jna.jar" >jna.jar 鍜?examples.jar 錛岄兘涓嶆槸寰堝ぇ錛屽彧鏈?00澶欿銆?br />
铏界劧榪欑瘒鏂囩珷鍙槸浠嬬粛浜嗕竴涓婮NA鍏充簬Swing鐨勭畝鍗曠敤娉曪紝浣嗘槸鏈変簡榪欎釜鎴戞渶鍏堝埌鐨勪究鏄彲浠ュ仛綾諱技浜嶻ahoo Widget鍜孏oogle Widget涔嬬被鐨勪笢瑗夸簡錛岃繕鍙互鍋氬ソ鐪嬬殑fishEye,SideBar錛孞NA鐨凧AR涓や釜鍚堣搗鏉ヤ笉榪?00K錛屽嵈鑳借榪欎箞澶氬鏉傜殑浜嬫儏綆鍗曞寲錛岀湡鏄簿婀涚殑鑹烘湳鍟婏紝鍡?br />

]]>