The emoticons box automatically generates thumbnails. All emoticons are listed in the jtabbepane group.

Source: Internet
Author: User

/** <Br/> */<br/> package client; </P> <p>/** <br/> * @ author administrator <br/> */</P> <p> Import Java. AWT. borderlayout; <br/> Import Java. AWT. color; <br/> Import Java. AWT. graphics2d; <br/> Import Java. AWT. renderinghints; <br/> Import Java. AWT. event. mouseevent; <br/> Import Java. AWT. event. mouselistener; <br/> Import Java. AWT. geom. affinetransform; <br/> Import Java. AWT. image. bufferedimage; <br /> Import Java. AWT. image. colormodel; <br/> Import Java. AWT. image. writableraster; <br/> Import Java. io. file; <br/> Import Java. io. ioexception; </P> <p> Import javax. imageIO. imageIO; <br/> Import javax. swing. boxlayout; <br/> Import javax. swing. imageicon; <br/> Import javax. swing. jdialog; <br/> Import javax. swing. jlabel; <br/> Import javax. swing. jpanel; <br/> Import javax. swing. jtabbedpane; <br/> Import javax. SWI Ng. border. border; <br/> Import javax. swing. border. lineborder; </P> <p> public class expression extends jdialog {<br/> @ suppresswarnings ("serial ") <br/> class mylabel extends jlabel {<br/> string name; </P> <p> mylabel (bufferedimage icon, string name) {<br/> setborder (New lineborder (getbackground (); <br/> This. name = Name; <br/> This. seticon (New imageicon (icon); <br/> addmouselistener (ML); <br/>}</P> <P> class mylistener implements mouselistener {<br/> Public void mouseclicked (mouseevent e) {<br/> mylabel ML = (mylabel) E. getcomponent (); <br/> system. out. print (Ml. name); </P> <p >}</P> <p> Public void mouseentered (mouseevent e) {<br/> setborder (E ); </P> <p >}</P> <p> Public void mouseexited (mouseevent e) {<br/> removeborder (E ); </P> <p >}</P> <p> Public void mousepressed (mouseevent e) {</P> <p >}</P> <p> Public Vo Id mousereleased (mouseevent e) {</P> <p >}</P> <p> private void removeborder (mouseevent e) {<br/> mylabel ML = (mylabel) e. getcomponent (); <br/> Border border = new lineborder (getbackground (); <br/> ML. setborder (Border); <br/>}</P> <p> private void setborder (mouseevent e) {<br/> mylabel ML = (mylabel) E. getcomponent (); <br/> Border border = new lineborder (new color (0x0000ff); <br/> ML. setborder (Border); <B R/>}< br/> private jtabbedpane jtp; <br/> private jpanel JP; <br/> private mylistener mL; <br/> private file [] parentfiles; </P> <p>/** <br/> */<br/> Private Static final long serialversionuid = 1l; <br/> Public static void main (string [] ARGs) {<br/> new expression (); <br/>}< br/> Public static bufferedimage resize (bufferedimage source, int HW) {<br/> // targetw, targeth indicates the target length and width respectively. <br/> int t Ype = source. getType (); <br/> bufferedimage target = NULL; <br/> double SX = (double) HW/source. getwidth (); <br/> double Sy = (double) HW/source. getheight (); <br/> // here you want to achieve proportional scaling within the range of targetw and targeth. If proportional scaling is not required <br/> //, comment out the following if else statement <br/> If (SX> Sy) {<br/> SX = sy; <br/> hW = (INT) (SX * Source. getwidth (); <br/>}else {<br/> Sy = SX; <br/> hW = (INT) (SY * Source. getheight (); <br/>}< br/> If (type = bufferedimage. type_custom) {// handmade <br/> colormodel CM = source. getcolormodel (); <br/> writableraster raster = cm. createcompatiblewritableraster (HW, HW); <br/> Boolean alphapremultiplied = C M. isalphapremultiplied (); <br/> Target = new bufferedimage (CM, raster, alphapremultiplied, null); <br/>} else {<br/> Target = new bufferedimage (HW, hw, type); <br/>}< br/> graphics2d G = target. creategraphics (); <br/> // smoother than exlax: <br/> G. setrenderinghint (renderinghints. key_rendering, renderinghints. value_render_quality); <br/> G. drawrenderedimage (source, affinetransform. getscaleinstance (sx, Sy); <br/> G. dispose (); <br/> return target; <br/>}< br/> Public static void saveimageasjpg (File fromfile, string savetofilestr, int HW) throws exception {<br/> bufferedimage srcimage; <br/> string imgtype = "Jpeg"; <br/> file SaveFile = new file (savetofilestr ); <br/> srcimage = ImageIO. read (fromfile); <br/> srcimage = resize (srcimage, HW); <br/> ImageIO. write (srcimage, imgtype, SaveFile); </P> <p >}</P> <p> Public expression () {<br/> This. setundecorated (true); <br/> jtp = new jtabbedpane (); <br/> ML = new mylistener (); <br/> file dir = new file ("images/"); <br/> parentfiles = dir. listfiles (); <br/>/** obtain all the files in the images folder and display them one by one */<br/> for (file F: parentfiles) {<br/>/** select a folder */<br/> If (F. isdirectory () {<br/> file minidir = new file (F, "mini"); <br/> JP = new jpanel (); <br/> JP. setlayout (New boxlay Out (JP, boxlayout. y_axis); <br/> JP. setname (F. getname (); <br/> try {<br/> If (! Minidir. exists () {<br/>/** if there is no mini folder, create one. And generate a thumbnail */<br/> minidir. mkdir (); <br/> creatmini (F. listfiles (); <br/>}< br/>/** display the thumbnail in the mini folder */<br/> showexpression (minidir. listfiles (); <br/>} catch (ioexception E) {<br/> // todo <br/>}< br/>/** after adding the image in this folder to the jpanel, display this on jtabbedpane */<br/> jtp. add (JP); <br/>}< br/> initgui (); </P> <p >}</P> <p> private void creatmini (file [] files) {<br/> int K; <br/> for (file F: Files) {<br/> string saveto = f. getname (). tolowercase (); <br/> If (saveto. endswith (". GIF ") | saveto. endswith (". PNG ") | saveto. endswith (". jpg ") | saveto. endswith (". JPEG ") {<br/> K = saveto. lastindexof ('. '); <br/> saveto = saveto. substring (0, k) + ". jpg "; <br/> saveto = f. getparent () + "// mini //" + saveto; <br/> try {<br/> saveimageasjpg (F, saveto, 25 ); <br/>} catch (exception e) {<br/> E. printstacktrace (); <br/>}< br/> private void initgui () {<br/> Add (jtp, borderlayout. center); <br/> pack (); <br/> setvisible (true); <br/>}< br/> private void showexpression (file [] files) throws ioexception {<br/> int num = files. length; <br/> string name; <br/> jpanel tempp = new jpanel (); <br/> int K; <br/> int cnum = (INT) math. SQRT (Num); <br/> for (INT I = 0; I <num; I ++) {<br/> if (I> 0 & I % cnum = 0) {<br/> JP. add (tempp); <br/> tempp = new jpanel (); <br/>}< br/> bufferedimage icon = ImageIO. read (files [I]); <br/> name = files [I]. getname (); <br/> K = Name. indexof ('. '); <br/> name = Name. substring (0, k); <br/> tempp. add (New mylabel (icon, name); <br/>}< br/> JP. add (tempp); <br/>}</P> <p>

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.