⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transparentbackground.java

📁 java+sql 图书管理系统
💻 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 + -