Skip to content

Instantly share code, notes, and snippets.

@oksbwn
Created April 1, 2020 13:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save oksbwn/0a6a38420ab4d129c2cf6711c54d7e68 to your computer and use it in GitHub Desktop.
Save oksbwn/0a6a38420ab4d129c2cf6711c54d7e68 to your computer and use it in GitHub Desktop.
import java.awt.Color;
import java.awt.Dimension;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.imageio.ImageIO;
import javax.swing.*;
public class Main {
static JFrame frame2 = new JFrame();
static Point p;
static Point R;
static Point D;
static int Finaly;
static int Startx;
static int Starty;
static int Finalx;
static JTextField jt = new JTextField();
static SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
private static String path="W:"; //Need to change drive as per your machine
public static void main(String[] args) {
Main cS = new Main();
cS.SnapTaker();
}
public void SnapTaker() {
Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize(); // size of the screen
frame2.setBounds(0, 0, scrSize.width, scrSize.height);
frame2.getContentPane().setLayout(null);
frame2.setAlwaysOnTop(true);
frame2.setUndecorated(true);
frame2.setBackground(new Color(Color.black.getRed(), Color.black.getGreen(), Color.black.getBlue(), 1));
frame2.getContentPane().setBackground(new Color(Color.black.getRed(), Color.black.getGreen(), Color.black.getBlue(), 50));
((JComponent) frame2.getContentPane()).setBorder(
BorderFactory.createMatteBorder(2, 2, 2, 2, Color.black));
frame2.setType(javax.swing.JFrame.Type.UTILITY);
// frame2.setAlwaysOnTop(true);
jt.setBounds(0, 0, 0, 0);
jt.addMouseListener(mouseListener);
jt.setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2, Color.black));
jt.addMouseMotionListener(mouseListener);
jt.setEditable(false);
jt.setBackground(new Color(Color.black.getRed(), Color.black.getGreen(), Color.black.getBlue(), 0));
frame2.getContentPane().add(jt);
final JLabel cloesButton = new JLabel("Close");
cloesButton.setForeground(Color.red);
cloesButton.setToolTipText("Close");
cloesButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
frame2.dispose();
}
@Override
public void mouseEntered(MouseEvent arg0) {
cloesButton.setForeground(Color.red);
}
@Override
public void mouseExited(MouseEvent arg0) {
cloesButton.setForeground(Color.white);
}
});
cloesButton.setSize(15, 15);
cloesButton.setBounds(scrSize.width - 40, 0, 40, 20);
final JLabel Snap = new JLabel("Take Snap");
// Snap.setIcon(new ImageIcon(RscLoader.getImage("cam.jpg")));
// Snap.setForeground(Color.white);
Snap.setToolTipText("Take Snap");
Snap.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
takeSnap();
}
@Override
public void mouseEntered(MouseEvent arg0) {
Snap.setForeground(Color.GREEN);
}
@Override
public void mouseExited(MouseEvent arg0) {
Snap.setForeground(Color.white);
}
});
Snap.setBounds(scrSize.width - 120,0, 80, 20);
frame2.getContentPane().add(Snap);
frame2.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent arg0) {
p = MouseInfo.getPointerInfo().getLocation();
//jt.setBounds(0,0,p.x,p.y);
}
@Override
public void mouseReleased(MouseEvent arg0) {
R = MouseInfo.getPointerInfo().getLocation();
jt.setBounds(p.x, p.y, R.x - p.x, R.y - p.y);
}
});
frame2.getContentPane().add(cloesButton);
frame2.setVisible(true);
}
private final static void takeSnap() {
try {
Robot robot = new Robot();
Rectangle area = new Rectangle(jt.getBounds());
BufferedImage bufferedImage = robot.createScreenCapture(area);
File file = new File(path+"\\screenshot_"+sdf.format(new Date())+".png");
boolean i = ImageIO.write(bufferedImage, "jpg", file);
if (i) {
JOptionPane.showMessageDialog(frame2, "Snapshot Taken Sucessfully !!");
}
} catch (Exception e) {
JOptionPane.showMessageDialog(frame2, "Error Taking Snapshot !!");
e.printStackTrace();
}
}
private final static MouseAdapter mouseListener = new MouseAdapter() {
int x, y;
@Override
public void mousePressed(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON1) {
x = e.getX();
y = e.getY();
}
}
@Override
public void mouseDragged(MouseEvent e) {
if ((e.getModifiersEx() & MouseEvent.BUTTON1_DOWN_MASK) != 0) {
jt.setLocation(e.getXOnScreen() - x, e.getYOnScreen() - y);
}
}
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment