Dieser Artikel fasst die implementierenden Screenshot -Methoden für Java -Programmierungen zusammen. Teilen Sie es für Ihre Referenz wie folgt weiter:
Methode 1:
importieren java.awt.desktop; import java.awt.dimension; import java.awt.rectangle; import Java.awt.robot; import Java.awt.toolkit; Import Java.aww t.image.buffenedimage; Import Java.io. Datei; importieren javax.imageo.imageo; öffentliche Klasse capturescreen {public static void capturescreen (String -Dateiname, String -Ordner) Ausnahme {Abmens Ion Screenszen = Toolkit.getDefaulttoolkit (). GetCreensize (); ROBOT ROBOT = New Robot (); = neue Datei (Screenfile, Ordner); Desktop.getDesktop () .Open (f); / Todo automatisch generiertes Block E. PrintstackTrace ();Methode 2:
Paket com.qiu.util; import Java.io.*; import Javax.swing.*; Import Java.awt. Imageio.*;/***Eine einfache Bildschirmaufnahme***/öffentliche Klasse ScreenCapture {// Testen Sie die Hauptpublikum statische statische void main (String [] args) löst die Ausnahme aus {String userDir = systeme m.getProperty ("user.dir" " ); ) Panel.SetLayout (New BorderLayout ()) CaptureImage (); } private screencapture () {try {Robot = new Robot (); Dialog. regelt); (); int math , recy, recw, red); ; .GetMaximumSize ()); Neue Rechteck (Toolkit.getDefaulttoolkit () .GetScreenSize ()); = ROBOT.CreateScreencapture (neues Rechteck (Toolkit.getDefaulttoolkit () .GetScreenS ()); Nach Capture* / public bufferedImage getPickedimage () {return pickedImage; Format * * @dePrecat ed ersetzt durch SaveAspng (Dateidatei) ** / @deprecated public void SavetoFile (Dateidatei) löscht IOException {imageio.write (getPickedimage (), DefaultImageFormater, Datei); In PNG -Format*/ public void SaveasPng (Dateidatei) löscht IOException {imageio.write (getPickedimage (), "PNG", Datei); löst ioe xception {imageio.write (getPickedimage (), "JPEG", Datei); ); ndimage labfullscreeMage = neuer Hintergrund () private Roboter; erweitert JLABEL {public void paintComponent (Grafik g) {Super.PaintComponent (g); ); Liney, Getwidth (), Liney); ;Methode 3:
Da es an der Systempalette minimiert ist, ist noch ein Palettensymbol erforderlich.
Der wichtigste Screenshot -Code -Teil ist:
Robot ro = new Robot (); Toolkit tk = Toolkit.getDefaulttoolkit (); Dimension di = tk.getScreenSize (); Rechteck rec = new rechteck (0,0, di.widt H, di.Height); BufferedImage bi = ro Ro .
(Quellcode stammt von CSDN)
Import Java.awt. ; JtabbedPane JTP; // Ein einzelner Ort viele Bilder privater Int Index; // Ein Index, der immer erhöht wird, um Bilder zu identifizieren. Private Jradiobutton Java, System; // Java -Schnittstelle, Systemschnittstelle/** Erstellt eine neue Instanz von Captures -Screen** / ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : ::::::::::::::::::::::::::::::: public capturescreen () {Super ("Screencapture -Software (dritte Ausgabe)"); setLookAndFeel (uimanager TOP, JTABbedPane.Scroll_tab_Layout); dies); JLabel ("Screen Capture", JLabel.Center); ) Buttonjp.Add (Start); Jpanel (); // Das Panel mit zwei Optionskasten JP.Add (Java = New Jradiobutton ("Java -Schnittstelle"); this; New Jpanel (); ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : :::::::::::::::::::::::::::::::::::::::::::::::::::::::: .GETCONTENTPANE (). .South); {public void Windowing (WindowEvent WE) () .GetResource ("Bg.gif"); ActionEvent ae) {joptionpane.showMessagedialog (capturescreen.dis, "<html> <font color = rot> <center> <h 2> Über </h2> </center> </font>" + "Dies ist ein reiner Java Bildschirmaufnahmeprogramm <br> zur vorherigen Basis hinzufügen, einige häufig verwendete Funktionen, <br> " +", z. Fragen während der Verwendung, bitte kontaktieren Sie uns. </Font> </html> ");}}); pm.addSeparator (); {Capturescreen.this.setvisible (true);}}); ); "Java Screen Capture", PM); Exe) {exe.printstacktrace (); hinzugefügt, die aktuelle Sache muss gelöscht werden und der Tabpane wird erneut eingegeben, wenn (index == 0) {C.Removeall (); Fügen Sie einfach ein Panel zu der Tabpane hinzu // und Sie müssen nichts machen} picpanel pic = new picpanel (get); pic); ro = neuer Roboter (); (rec); (True); Alle Bilder */ public void dosaveall () {if (jtp.gettabCount () == 0) {joptionpane.showmessagedialog (dieses "Das Bild kann nicht leer sein !!", "Fehler", joptionpane.error_message); } JFilechoser JFC = New JFilechoser ("."); (New JPGFilter () )); ext = file.toStrin g (). TolowerCase (); über = "png"; {ext = ext.substring (0, ext.lastIndexof (AB Out.tolowerCase ()); }} // Die Thread -Klasse, die speziell zum Speichern aller Bilder verwendet wurde, muss auch angezeigt werden. Save Progress Bar Private Class SaveAllthread erweitert JDialog implementiert Runnable {private String -Name; // Dateiname Header private Zeichenfolge ext; // Dateiformat privat jProgressBar J PB; // Ein Fortschrittsbalken privat JLabel Info; // eine Informationsleiste Zeigen Sie private Int -Alltask, Schonetask; // alle Aufgaben, erledigte Aufgaben public SaveAllhread (String -Name, String ext) {super (capturescreen.this, "Speichern" true); setMinimum (0); Diese ) .Start (); {Picpanel pp = (picpanel) jtp.getComponentat (i); setText ("<html> <b> Speichern nach: </b> <br>"+f.toString ()+"</html>"); setValue (fessel); this.dispose (); Dieses Bild kann nicht leer sein. New Bmpfilter ()); .GetSelectedFile (); JPG "; if (! Ext.endswith (". JPG ")) {String ns = ext+". JPG "; Datei = new Datei (ns);}} else if (ff Instance von pngfilter) {über =" png "; if (! ext.endswith (". Png") {String ns = ext+".png"; ext.endswith (". Bmp") {String ns = ext+". BMP"; (".gif") {string ns = ext+". gif"; ! ");} else joptionpane.showMessagedialog (this," Save fehlgeschlagen! ");}} catch (execing exe) {exe.printstacktrace ();}} /** *öffentliche Verarbeitung fügt das aktuelle Bild der Clipboard -Methode * / / / / / / / / / / public void docopy (endgültig gepufferte Bild) {try {if (get == null) {joptionpane.showmessagedialog (dies, "Das Bild kann nicht leer sein !!", "Fehler", JoptionPane. ERRAGE_MESSAGE); new übertragbar () {public DataFlavor [] GetTransferDataflavors () {Neue DataFlavor [] {DataFlavor.imageFlavor}; Flavor) wirft nicht unterstützt, IOException {ifataflavorsupported (Aroma)) "Kopieren Sie die Systempaste !!"); Fehler_Message); Getource (); Uimanager .getCrosPlatformLookandFeelClassName ()); ); und man kann in das Tabpane -Panel einfügen // Es gibt auch seine eigenen Methoden zum Umgang mit dem Speichern und Kopieren der privaten Klasse picpanel erweitert JPanel Implements actionListener {Jbutton speichern, kopieren, schließen; // BufferedImag, das Speichern, Kopieren, Schließen, Schließen, Schließen, Schließen, Schließ Button BufferedImag E Get; // Bild von öffentlichem Picpanel (BufferedImage Get) {Super (New BorderLayout ()); ) {Save = New Jbutton ("Save (s)"); '); JLAB EL ICON = NEW JLABEL (neues ImageCon (Get)); (this); ) {docopy (get); () {} public boolean Accept (Dateidatei) {if (Datei.toString (). TolowerCase () String getde script () {return " *.bmp (BMP -Bild)"; Datei) {if (Datei.toString () .ToLowerCase (). Endswith (". JPG") || Datei.isDirectory ()) {return true; J PG (JPG Image) ";}} // Filter im GIF -Format private Klasse Giffilter erweitert javax.swing.filechooser.FileFilter {public giffilter () {} public boolean Accept (Dateidatei) {if (fi le.tostring ((fi le.tostring ) .ToLowerCase (). Endswith (".gif") ||. // Speichern Sie PNG Format Filter Private Klasse PNGFilter erweitert javax.swing.filechooser.filefilter {public boolean Accept (Datei Datei) {if (Datei.toString (). TolowerCase (). EndsWith (". ()) {return true; MENTS MOUSELILEER, MOUSEMOTIONENELSTELLUNG {private BufferedImage BI; /Geben Sie den ausgewählten Bereich Private Cursor CS = neuer Cursor an (Cursor.crosshair_cursor); // Geben Sie den Mauszustand im allgemeinen privaten Zustände an, Strom = Zustände.default; // Geben Bereich von acht Bearbeitungspunkten/ ::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::: /Die folgenden vier Konstanten geben an, wer der Endpunkt in der ausgewählten Zeile ist. öffentliches statisches int start_x = 1; Nur diese beiden müssen geändert werden. Der private Punkt p = neuer Punkt (); // Der aktuelle Standort des Mausschweges private boolean showtip = true; // ob eine Eingabeaufforderung angezeigt werden soll. Wenn Sie die linke Maustaste drücken, wird die Eingabeaufforderung erfolgen nicht mehr öffentliches Tempo (JFRAME JF, PufferedImage bi, int -Höhe) {this.jf = jf; this.addmousemotionListener (this); ); ; Endx; ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::; 2,5,5); -2,5,5); Starty-2,5,5); ] = neues Rechteck (x1-5, y-5,10,10); ] = neues Rechteck ((startx> endx? startx: endx) -5, y1-5,10,10); Starty: Endy) -5,10,10); X-5, (Starty> Endy? Starty: Endy) -5,10, 10); (COLOR.CYAN); G.Drawstring ("Bitte halten Sie die linke Maustaste gedrückt und platzieren Sie den Screenshot -Bereich nicht", PX, P.Y+15); , West usw. break; 0; = (starty> endy? end_y: start_y); Starten); Mousemoved (MouseEvent ME) {DOMOUSED (ME); Die Region, die Sie jedes Mal für private void -erdiene (mouseevent me) {if (select.contains (me.getPoint ()) {this.setCursor (neuer Cursor (Cursor.Move_cursor)) auswählen; sonst {States [] st = States.Values (); [i]; MouseEvent me) {} public void MouseDrag Ged (MouseEvent me) {int x = me.getX (); Starty+= (y-tempy); ) {if (currentX == start_x) {startx+= (x-tempx); | current == States.South) {if (currenty == start_y) {starty+= (y-tempy); current == States.north_east || current == States.north_east || y; tempx = x; = false; true; MouseEvent me) {if (me.getClickCount () == 2) {// Rechteck rec = neuer Rechteck (Stern TX, Starty, Math.abs (Endx -Startx), Math.abs (Endy -Starty)); = me.getPoint (); .GetSubimage (select.x, select.y, select.width, select.height); x+ select.width> = this.getWidth ()) {wid = this.getWidth ()-select.x; ) -Select.y; []) {Swingutilities.invokelater (new Runnable () {public void run () {new erfassungen // Zeigt die nordwestliche Ecke von North an (neuer Cursor (Cursor.n_Resize_Cursor)), North_east (neuer Cursor (Cursor.ne _resize_cursor)), East (neuer Cursor (Cursor .e_ressize_cursor), South_east (New Cursor (Cursor.se_resize_cursor), South_east (New Cursor (Cursor.se_resize), South_east (New Cursor (Cursor.se_ressize)), South_east (neuer Cursor (Cursor.se_ressize). ), South (neuer Cursor (Cursor.s_Resize_Cursor)), South_West (neuer Cursor (Cursor.sw_ rsize_cursor)), west (neuer Cursor (Cursor.w_Resize_Cursor)), Move (neuer Cursor (Cursor.move_cursor)), Default (New Cursor (Cursor.move Cursor (Cursor.Default_Cursor);Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.