?? transparentbackground.java
字號:
package MyLibraryok.MyMain;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Date;
public class TransparentBackground extends JComponent implements
ComponentListener, WindowFocusListener,
Runnable {
private JFrame frame;
private Image background;
private long lastupdate = 0;
public boolean refreshRequested = true;
public TransparentBackground(JFrame frame) {
this.frame = frame;
updateBackground();
frame.addComponentListener(this);
frame.addWindowFocusListener(this);
new Thread(this).start();
}
/**
* @todo 獲取屏幕快照后立即更新窗口背景
*/
public void updateBackground() {
try {
Robot rbt = new Robot();
// Toolkit theKit = aWindow.getToolkit();
// Dimension wndSize = theKit.getScreenSize();
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension dim = tk.getScreenSize();
background = rbt.createScreenCapture(
new Rectangle(0, 0, (int) dim.getWidth(),
(int) dim.getHeight()));
} catch (Exception ex) {
//p(ex.toString( ));
// 此方法沒有申明過,因為無法得知上下文。因為不影響執行效果,先注釋掉它
ex.printStackTrace();
}
}
public void paintComponent(Graphics g) {
Point pos = this.getLocationOnScreen();
Point offset = new Point( -pos.x, -pos.y);
g.drawImage(background, offset.x, offset.y, null);
}
public void windowGainedFocus(WindowEvent e) {
}
public void windowLostFocus(WindowEvent e) {
}
public void componentHidden(ComponentEvent e) {
}
public void componentMoved(ComponentEvent e) {
}
public void componentResized(ComponentEvent e) {
}
public void componentShown(ComponentEvent e) {
}
public void refresh() {
if (frame.isVisible()) {
repaint();
refreshRequested = true;
lastupdate = new Date().getTime();
}
}
public void run() {
try {
while (true) {
Thread.sleep(250);
long now = new Date().getTime();
if (refreshRequested &&
((now - lastupdate) > 1000)) {
if (frame.isVisible()) {
Point location = frame.getLocation();
frame.hide();
updateBackground();
frame.show();
frame.setLocation(location);
refresh();
}
lastupdate = now;
refreshRequested = false;
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
Dimension screen = getToolkit().getScreenSize(); //得到屏幕尺寸
int myWidth = screen.width;
int myHeight = screen.height;
public static void main(String[] args) {
JFrame frame = new JFrame();
// frame.setUndecorated(true);
TransparentBackground bg = new TransparentBackground(frame);
bg.updateBackground();
bg.setLayout(new BorderLayout());
JPanel panel = new JPanel() {
public void paintComponent(Graphics g) {
g.setColor(Color.blue);
Image img = new ImageIcon("Image/but.png").getImage();
g.drawImage(img, 0, 0, null);
}
};
panel.setOpaque(false);
bg.add("Center", panel);
frame.getContentPane().add("Center", bg);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = frame.getSize();
frame.pack();
frame.setSize(200, 200);
frame.setLocation((screenSize.width - 120), (screenSize.height-(screenSize.height - 20)));
frame.show();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -