Artikel ini merangkum metode layar implementasi pemrograman Java umum. Bagikan untuk referensi Anda, sebagai berikut:
Metode 1:
Impor java.awt.desktop; impor java.awt.dimension; impor java.awt.rectangle; impor java.awt.robot; impor java.awt.toolkit; impor java.aww t.image.bufferedimage; impor java.io. File; import javax.imageio.imageio; kelas publik capturecreen {public static void captureScreen (string fileName, folder string) melempar pengecualian {dimens ion screensize = toolkit.getDefaultToolKit (). GetScreensize (); Robot = robot baru (); = file baru (folder); Desktop.getdesktop () .open (f); / TODO AUTO-ENTEORATED Catch Block E.PrintStackTrace ();}}}Metode 2:
Paket com.qiu.util; import java.io.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.image.*; im port javax. Imageo.*;/***Pengambilan layar sederhana***/SCLASECAPTURE KELAS PUBLIK {// Tes utama public static void main (String [] args) melempar pengecualian {string userdir = systeme m.getproperty ("user.dir" File Tempfile = File Baru ("D:", "Temp.png"); ); Capture. } screencapture private () {coba {robot = robot baru (); dialog. Rech); (); int Minx. Math .min (x1, x2); , Recy, RecW); ; .getMaximeSize ()); Persegi panjang (Toolkit.GetDefaultToolKit () .getScreensize ()))); = robot.createscreencapture (rectangle baru (toolkit.getDefaultToolKit () .getScreensize ())); Setelah Capture* / Public BufferedImage GetPickedImage () {return pickedImage;} / ** Dapatkan ikon yang ditangkap* / public Imageicon getPickedicon () {return new Imageicon (getPickedImage ()); Format * * @deprecat diganti oleh saveaspng (file file) ** / @deprecated public void savetofile (file file) melempar ioException {imageo.write (getPickedImage (), defaultImageFormater, file); Dalam format png*/ public void saveaspng (file file) melempar ioException {imageo.write (getPickedImage (), "png", file); melempar ioe xception {imageo.write (getPickedImage (), "jpeg", file); ); ndimage labfullscreenimage = latar belakang baru (); memperluas jlabel {public void paintComponent (grafik g) {super.paintcomponent (g); ); liney, getWidth (), liney); ;Metode 3:
Karena diminimalkan ke palet sistem, ikon palet masih diperlukan.
Bagian kode tangkapan layar utama adalah:
Robot ro = robot baru (); toolkit tk = toolkit.getDefaultToolKit (); dimensi di = tk.getScreensize (); persegi panjang rec = persegi panjang baru (0,0, di.widt H, di.height); bufferedimage bi = ro CreateScreencapture (Rec);
(Kode sumber berasal dari CSDN)
impor java.awt.*; impor java.awt.datatransfer.dataflavor; impor java.awt.datatransfer.transferable; impor java.awt.datatransfer.unsupportedflavore xception; impor java.awt.avent. ; Jtabbedpane jtp; // satu tempat banyak gambar indeks int pribadi; // indeks yang akan selalu meningkat, digunakan untuk mengidentifikasi gambar pribadi jradiobutton java, sistem; // antarmuka java, antarmuka sistem/** membuat instance baru dari CaptureScreen* / ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::: Public capture () {super ("Perangkat Lunak Penangkapan Layar (Edisi Ketiga)"); setLookAndfeel (uimanager.getsystemlookandfeelClassName ()); Top, Jtabbedpane.scroll_tab_layout); ini); Jlabel (Capture Screen ", Jlabel.Center); ); Jpanel (); // Panel dengan dua tombol radio jp.add (java = jradiobutton baru ("antarmuka java")); ini); JPanel (); ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .South); {public voidclosing (windowevent we) {captureCreen.this.setVisible (false); () .getResource ("bg.gif")); ActionEvent ae) {joptionpane.showmessageDialog (capturescreen.tihis, "<html> <font color = red> <center> <h 2> tentang </h2> </denter> </font>" + "Ini adalah java murni murni Program Pengambilan Layar <br> Tambahkan ke dasar sebelumnya, beberapa fungsi yang umum digunakan, <br> " +" misalnya, simpan batch, beberapa klip, dan salin ke papan paste sistem. Setiap pertanyaan saat digunakan, jangan ragu untuk menghubungi kami. <br> " +" <font size = 5 color = blue> penulis: qianli bingfeng <br> " +" <i> qq: 24325142 </i> <br> </font> </html> ");}}); pm.addseparator (); pm.add (MenuUtem baru (" Tampilkan jendela utama ")). AddactionListener (ActionListener baru () {public void actionPerformed (actionEvent AE) {CaptureCreen.this.setVisible (true); ); "Java Screen Capture", PM); Exception exe) {exe.printstacktrace (); Ditambahkan ,/ Hal saat ini perlu dibersihkan dan tabpane dimasukkan ke dalam jika (index == 0) {c.removeall (); Cukup tambahkan panel ke tabpane secara langsung // dan Anda tidak perlu melakukan apa pun} picpanel pic = picpanel baru (get); pic); ro = robot baru (); (Rec); (benar); Semua gambar */ public void dosaveall () {if (jtp.gettabcount () == 0) {joptionpane.showmessagedialog (ini, "gambar tidak bisa kosong !!", "kesalahan", joptionpane.error_message); } JFilechooser JFC = JFilechooser baru ("."); (JPGFilter baru () ); ext = file.tostrin g (). TolowerCase (); tentang = "png"; {ext = ext.substring (0, ext.lastIndexof (ab out.tolowercase ())); }} // Kelas utas khusus digunakan untuk menyimpan semua gambar, itu juga perlu menampilkannya disimpan bilah priver private saveallthread memperluas implementasi jdialog runnable {private string name; // nama file header pribadi string ext; // file format jprogressbar j pb; // bilah privil private jlabel info; // Sebuah batang informasi batang private int alltask, donetask; // semua tugas, tugas selesai public Saveallthread (string name, string ext) {super (captureScreen.ini, "save" true); .setMinimum (0); this.add (Info, Borderlayout.nor TH); ) .start ();} private void setProgressBarString () {jpb.setstring (""+donetask+"/"+allTask); {Picpanel pp = (picpanel) jtp.getComponentat (i); setText ("html> <b> Menyimpan ke: </b> <br>"+f.tostring ()+"</html>"); setValue (Donetask); this.dispose ();}}} / ***Proses publik dan simpan metode gambar*Metode ini tidak lagi pribadi* / public void doSave (bufferedImage get) {coba {if (get == null) {joptionpane.showmessageDialog ( ini, gambar tidak bisa kosong !! "," Jopti Onpane. BMPFilter baru ()); StringSelectedFile (); Jpg "; if (! Ext.endswith (". Jpg ")) {string ns = ext+". Jpg "; file = file baru (ns);}} lain jika (ff instance dari pngfilter) {sekitar =" png "; if (! Ext.endswith (". ext.endswith (". BMP")) {String ns = ext+". BMP"; ".gif")) {string ns = ext+". gif"; Lai ");} selain itu joptionpane.showmessageDialog (ini," save fag! ");}} catch (exception exe) {exe.printstacktrace ();}} /** *Pemrosesan publik menambahkan gambar saat ini ke metode clipboard * / public void docopy (gambar buferedimage akhir) {coba {if (get == null) {jOptionPane.showmessage -of New Transfer () {public Dataflavor [] getTransferDataFlavors () {return new Dataflavor [] {Dataflavor.imageFlavor} public boolean isDataFl (dataflavor) {return dataflavor.imageflavor (dataflavor) {return Dataflavor.imageflavor.Equals (DataFlavor) {return DataFlavor.imageflavor.EQUALS (DATAFLAVOR); rasa) Melemparkan yang tidak didukung oleh IOException {if (isdataflavorsported (flavor)) lempar newah yang tidak didukung xception (getrave); , "Salin ke Papan Tempel Sistem !!"); Error_message); getsource (); if (source == mulai) {dostart (); Uimanager .getcrossplatformLookandFeelClassName ()); ); dan orang dapat dimasukkan ke dalam panel Tabpane // Ada juga rangkaian metode sendiri untuk menangani menyimpan dan menyalin kelas pribadi Picpanel memperluas JPanel mengimplementasikan ActionListener {Jbutton Simpan, Salin, Tutup; // BufferedImag, yang menunjukkan menyimpan, menyalin, menutup, Tombol Buffered EST; // Dapatkan gambar picpanel publik (bufferedImage get) {super (borderlayout baru ()); ) {save = new jbutton ("save (s)"); '); JLAB EL ICON = Jlabel baru (Imageicon baru (GET)); (ini); ) {docopy (get); () {} public boolean accept (file file) {if (file.toString (). TolowerCase (). Endswith (". BMP") || file.isdirectory ()) {return true; String getDe script () {return " *.bmp (gambar bmp)"; file) {if (file.toString () .tolowerCase (). endswith (". jpg") || file.isdirectory ()) {return true; J pg (gambar jpg) ";}} // simpan filter dalam format gif class private giffilter memperluas javax.swing.filechooser.filefilter {public giffilter () {} public boolean accept (file file) {if (fi le.tostring () {} public boolean (file file) {fi le.tostring () ) .TolowerCase (). ENDSWITH (".GIF") || // Simpan png format filter kelas pribadi pngfilter memperluas javax.swing.filechooser.fileFilter {public boolean accept (file file) {if (file.toString (). TolowerCase (). Endswith (". Png") || file.isdirectory () {return true;} return false; MouseListener, MousemotionListener {private bufferedImage BI; /Tunjukkan area kursor pribadi yang dipilih cs = kursor baru (kursor.crosshair_cursor); // menunjukkan status tikus secara umum negara bagian saat ini = state.default; // menunjukkan keadaan pengeditan swasta persegi panjang saat ini [] rec; // menunjukkan Area delapan poin pengeditan /:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::: /: /Konstanta berikut menunjukkan siapa titik akhir pada baris yang dipilih. Public Int Start_x = 1; Hanya dua ini yang perlu diubah titik pribadi p = titik baru (); // Lokasi saat ini dari mouse memindahkan boolean private showtip = true; // apakah akan menampilkan prompt. Jika Anda menekan tombol mouse kiri, prompt akan akan tidak lagi menampilkan suhu publik (JFRAME JF, BufferedImage BI, Int Width, Int Height) {this.jf = JF; this.addmouseMotionListener (ini); ); ; endx; int y = starty <endy? starty: endy; ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::: Int x1 = (startx+endx)/2; 2,5,5); -2,5,5); Starty-2,5,5); = persegi panjang baru (x1-5, y-5,10,10); ] = rectangle baru ((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 ("Harap tahan tombol kiri mouse dan tidak menempatkan area tangkapan layar", px, p.y+15); , dll. Private void initselect (state state) {switch (state) {case default: currentX = 0 Break; 0; = (starty> endy? end_y: start_y); Start_x); Mousemoved (MouseEvent Me) {Domousemoved (Me); Wilayah Anda ingin memilih setiap kali void private domousemoved (mouseEvent me) {if (select.contains (me.getPoint ())) {this.setCursor (kursor baru (kursor.move_cursor)); else {states [] st = states.values (); untuk (int i = 0; i <rec.leng th; i ++) {if (rec [i] .contains (me.getPoint ())) {current = st [i]; MouseEvent saya) {} 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) saat ini == states.north_east || saat ini == states.north_east || y; Tempx = X; = false; true; MouseEvent saya) {if (me.getClickCount () == 2) {// rectangle rec = rectangle baru (bintang tx, starty, math.abs (endx -startx), math.abs (endy -starty)); = me.getPoint (); if (select.contains (p)) {if (select.x+select.width <this.getWidth () && select. y+select.height <this.getheight ()) {get = bi) .getSubimage (pilih. x+ select.width> = this.getWidth ()) {wid = this.getWidth ()-select.x; -Selek. []) {Swingutilities.invokelater (runnable baru () {public void run () {capture baru ();}}); // Menunjukkan sudut barat laut utara (kursor baru (cursor.n_resize_cursor)), utara_East (kursor baru (kursor.ne _resize_cursor)), timur (kursor baru (kursor .e_resize_cursor)), selatan_east (cursor baru (cursor.e_resize_cursor))), South_east (Cursor baru (Cursor.e_Resize_Resor)))), South_East (Cursor baru (Cursor.EE.SEZE.SEIZE. ), South (kursor baru (cursor.s_resize_cursor)), South_west (kursor baru (kursor.sw_ revize_cursor)), barat (kursor baru (kursor.w_resize_cursor)), pindahkan (kursor baru (kursor.move_cursor)), new (new New_cursor)),)))))))))))))))) Kursor (Cursor.default_cursor));Saya harap artikel ini akan membantu pemrograman Java semua orang.