📄 mysleepframe.java
字号:
package MyLibraryok.MyMain;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MySleepFrame extends JComponent implements ComponentListener,
WindowFocusListener {
private JFrame frame;
private boolean isHiding = false, isShowing = false, start = false;
private Image background;
private Point p;
//[color=Red]//获得当前屏幕快照[/color]
public void updateBackground() {
try {
Robot rbt = new Robot();
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();
}
}
// [color=Red] //将窗口掉离出屏幕以获得纯粹的背景图象[/color]
public void refresh() {
if (start == true) {
this.updateBackground();
frame.setLocation(p);
if (p.x < 0 || p.y < 0)
frame.setLocation(0, 0);
this.repaint();
}
}
public void componentHidden(ComponentEvent e) {
// TODO Auto-generated method stub
System.out.println("Hidden");
}
// [color=Red] //窗口移动时[/color]
public void componentMoved(ComponentEvent e) {
// TODO Auto-generated method stub
System.out.println("moved");
this.repaint();
}
// [color=Red] //窗口改变大小时[/color]
public void componentResized(ComponentEvent e) {
// TODO Auto-generated method stub
System.out.println("resized");
this.repaint();
}
public void componentShown(ComponentEvent e) {
// TODO Auto-generated method stub
System.out.println("shown");
}
// [color=Red] //窗口得到焦点后,用refresh()方法更新界面[/color]
public void windowGainedFocus(WindowEvent e) {
// TODO Auto-generated method stub
System.out.println("gainedFocus");
refresh();
start = false;
}
// [color=Red] //窗口失去焦点后,将其移出屏幕[/color]
public void windowLostFocus(WindowEvent e) {
// TODO Auto-generated method stub
System.out.println("lostFocus");
if (frame.isShowing() == true) {
System.out.println("visible");
} else {
System.out.println("invisible");
}
start = true;
p = frame.getLocation();
frame.setLocation(-2000, -2000);
}
public MySleepFrame(JFrame frame) {
super();
this.frame = frame;
updateBackground();
this.setSize(200, 120);
this.setVisible(true);
frame.addComponentListener(this);
frame.addWindowFocusListener(this);
// TODO Auto-generated constructor stub
}
//绘制外观,注意,其中 pos,offset 是为了将特定部分的图象贴到窗口上
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);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
// UIManager.setLookAndFeel("org.fife.plaf.Office2003.Office2003LookAndFeel");
// UIManager.setLookAndFeel("org.fife.plaf.OfficeXP.OfficeXPLookAndFeel");
// UIManager.setLookAndFeel("org.fife.plaf.OfficeXP.OfficeXPLookAndFeel");
// UIManager.setLookAndFeel(new SubstanceLookAndFeel());
//UIManager.setLookAndFeel(new SmoothLookAndFeel());
//UIManager.setLookAndFeel(new QuaquaLookAndFeel());
// UIManager.put("swing.boldMetal", false);
if (System.getProperty("substancelaf.useDecorations") == null) {
JFrame.setDefaultLookAndFeelDecorated(true);
//JDialog.setDefaultLookAndFeelDecorated(true);
}
System.setProperty("sun.awt.noerasebackground", "true");
// SubstanceLookAndFeel.setCurrentTheme(new SubstanceLightAquaTheme());
// UIManager.setLookAndFeel("org.fife.plaf.VisualStudio2005.VisualStudio2005LookAndFeel");
} catch (Exception e) {
System.err.println("Oops! Something went wrong!");
}
JFrame frame = new JFrame();
MySleepFrame t = new MySleepFrame(frame);
t.setLayout(new BorderLayout());
// JButton button = new JButton("This is a button");
// t.add("North", button);
JLabel label = new JLabel(new ImageIcon("image/but.png"));
t.add("South", label);
frame.setUndecorated(false);
frame.getContentPane().add("Center", t);
frame.addMouseListener(new MouseAdapter() { //窗口的鼠标事件处理
public void mousePressed(MouseEvent event) { //点击鼠标
triggerEvent(event); //调用triggerEvent方法处理事件
}
public void mouseReleased(MouseEvent event) { //释放鼠标
triggerEvent(event);
}
private void triggerEvent(MouseEvent event) { //处理事件
if (event.isPopupTrigger()) { //如果是弹出菜单事件(根据平台不同可能不同)
// popupMenuMouse.show(event.getComponent(), event.getX(),
// event.getY()); //显示菜单
JOptionPane.showMessageDialog(null,"","",JOptionPane.YES_NO_OPTION);
}
}
});
frame.pack();
frame.setResizable(false);
frame.setSize(150, 150);
frame.show();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// // t.start=true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -