天天看點

java swing常用代碼片段

(1)複制全部

java swing常用代碼片段

jbutton copyall=new jbutton("複制全部");  

            copyall.addactionlistener(new actionlistener() {  

                @override  

                public void actionperformed(actionevent e) {  

                    string content=area2.gettext();  

                    if(valuewidget.isnullorempty(content)){  

                        return;  

                    }  

                    windowutil.setsysclipboardtext(content);  

                }  

            });  

public static void setsysclipboardtext(string writeme)  

    {  

        clipboard clip = toolkit.getdefaulttoolkit().getsystemclipboard();  

        transferable ttext = new stringselection(writeme);  

        clip.setcontents(ttext, null);  

    }  

擷取一個"複制"按鈕

java swing常用代碼片段

/*** 

     * get a copy button. 

     *  

     * @param tf 

     * @return 

     */  

    public static jbutton getcopybtn(final jtextcomponent ta) {  

        jbutton copybtn = new jbutton(menuutil2.action_str_copy);  

        copybtn.addactionlistener(new actionlistener() {  

            @override  

            public void actionperformed(actionevent e) {  

                if(valuewidget.isnullorempty(ta)){  

                    toastmessage toastmessage = new toastmessage("文本框為null,請确認文本框是否已經建立",3000,color.red);  

                    toastmessage.setvisible(true);  

                }else{  

                    string input = ta.gettext();  

                    if (!valuewidget.isnullorempty(input)) {  

                        windowutil.setsysclipboardtext(input);  

            }  

        });  

        return copybtn;  

(2)黏貼

java swing常用代碼片段

btnpasteafterdel.addactionlistener(new actionlistener() {  

                    string content = windowutil.getsysclipboardtext();  

                    if (valuewidget.isnullorempty(content)) {  

                    gettextarea().settext(content);  

 擷取一個黏貼按鈕:

java swing常用代碼片段

     * get a paste button. 

     * @param ta 

    public static jbutton getpastebtn(final jtextcomponent ta) {  

        jbutton copybtn = new jbutton(menuutil2.action_str_paste);  

                string input = windowutil.getsysclipboardtext();  

                if (!valuewidget.isnullorempty(input)) {  

                    ta.settext(input);  

(3)給jtextarea 增加快捷鍵

java swing常用代碼片段

         final jtextarea ta=gettextarea();  

         keylistener[] keylisteners=ta.getkeylisteners();  

         ta.addkeylistener(new keyadapter() {  

                private long lasttimemillsencond;  

                private long lasttimemillsencondctrl;  

                private long lasttimemillsencondesc;  

                public void keypressed(keyevent e) {  

                    if(e.getkeycode() == keyevent.vk_a/*全選*/  

                            ||e.getkeycode() == keyevent.vk_c/* 複制 */  

                            ||e.getkeycode() == keyevent.vk_f/*格式化*/  

                            ||e.getkeycode() == keyevent.vk_z/*剪切*/  

                            ||e.getkeycode() == keyevent.vk_v){  

//                      system.out.println(e.getkeycode());  

                        lasttimemillsencondctrl=0;  

                    if(e.isshiftdown()){  

                        if(lasttimemillsencond==0){  

                            lasttimemillsencond=system.currenttimemillis();  

                        }else{  

                            long currenttime=system.currenttimemillis();  

                            long delta=currenttime-lasttimemillsencond;  

                            if(menuutil2.isdoubleclick(delta)){  

//                                  system.out.println("輕按兩下shift");  

                                lasttimemillsencond=0;  

                                string selectcontent = ta.getselectedtext();  

                                if(valuewidget.isnullorempty(selectcontent)){  

                                    return;  

                                }  

                                selectcontent=systemhwutil.deletequotes(selectcontent);  

                                ta.replaceselection(selectcontent);  

                            }else{  

                                lasttimemillsencond=system.currenttimemillis();  

                            }  

                        }  

                    }else if(e.iscontroldown()&&(e.getkeycode() != keyevent.vk_v/*86 */&&e.getkeycode() != keyevent.vk_z/*90*/  

                            &&e.getkeycode() != keyevent.vk_c/*67*/&&e.getkeycode() != keyevent.vk_a/*65*/)){//輕按兩下ctrl  

//                      system.out.println("lasttimemillsencondctrl:"+lasttimemillsencondctrl);  

                        if(lasttimemillsencondctrl==0){  

                            lasttimemillsencondctrl=system.currenttimemillis();  

                            long delta=currenttime-lasttimemillsencondctrl;  

//                          system.out.println(lasttimemillsencondctrl+" "+currenttime+" "+delta);  

                                system.out.println("輕按兩下ctrl");  

                                lasttimemillsencondctrl=0;  

                                quotesescape(ta,false);  

                                lasttimemillsencondctrl=system.currenttimemillis();  

                    }else if(e.getkeycode() == keyevent.vk_escape){  

                        if(lasttimemillsencondesc==0){  

                            lasttimemillsencondesc=system.currenttimemillis();  

                            if(menuutil2.isdoubleclick(currenttime-lasttimemillsencondesc)){  

//                                  system.out.println("輕按兩下esc");  

                                lasttimemillsencondesc=0;  

                                string content = ta.gettext();  

                                if(valuewidget.isnullorempty(content)){  

                                boolean iseditable=ta.iseditable();  

                                ta.seteditable(!iseditable);  

                                lasttimemillsencondesc=system.currenttimemillis();  

         ta.requestfocus();  

 menuutil2.isdoubleclick 實作如下:

java swing常用代碼片段

    * 通過時間間隔來判斷是否是輕按兩下(不是滑鼠,是鍵盤) 

    * @param delta 

    * @return 

    */  

   public static boolean isdoubleclick(long delta){  

    return (delta<300&&delta>100);  

   }  

(4)使jtextarea 自動換行

java swing常用代碼片段

resulttextpane = new assistpopuptextarea();  

       resulttextpane.setlinewrap(true);  

       resulttextpane.setwrapstyleword(true);  

(5)設定表格資料

java swing常用代碼片段

private void settabledata2(object[][] datas) {  

        defaulttablemodel model = new defaulttablemodel(datas, columnnames);  

        parametertable_1.setmodel(model);  

        this.parametertable_1.setrowheight(30);  

        rendtable();  

(6)擷取表格的資料

java swing常用代碼片段

     * 擷取表格中的請求要素 

     * 

    protected object[][] getparameter4table(){  

        tablemodel model= parametertable_1.getmodel();  

        int rowcount = model.getrowcount();//參數的個數  

        int columncount=model.getcolumncount();  

        object[][] data2 = new object[rowcount][];  

        for (int rowindex = 0; rowindex< rowcount; rowindex++) {  

            if (!valuewidget.isnullorempty(model.getvalueat(rowindex, 0))) {  

                object[] objs = new object[columncount];  

                for (int j = 0; j < columncount; j++) {  

                    object val = model.getvalueat(rowindex, j);  

                    if (!valuewidget.isnullorempty(val)) {  

                        objs[j] = val;  

                data2[rowindex] = objs;  

        }  

        system.out.println(data2.length);  

        return data2;  

(7)擷取元件對話框中的資料

java swing常用代碼片段

string newname = joptionpane.showinputdialog(ta.getparent()/*應該是jframe*/,  

                    "請輸入圖檔高度:", ta.getheight());  

            if (newname != null)  

            {  

                if (newname.equals("")) {  

                    toastmessage toastmessage = new toastmessage("file name can not be empty.",3000,color.red);  

                    return;  

                specifiedheight=integer.parseint(newname);  

            }else{/* indicate [cancel] button has been clicked */  

                toastmessage toastmessage = new toastmessage("已取消",2000,color.red);  

                toastmessage.setvisible(true);  

                return;  

 (8)一個簡單的模态視窗(對話框)

java swing常用代碼片段

package com.yunma.dialog;  

import java.awt.gridbagconstraints;  

import java.awt.gridbaglayout;  

import java.awt.insets;  

import java.awt.event.actionevent;  

import java.awt.event.actionlistener;  

import java.io.unsupportedencodingexception;  

import java.security.nosuchalgorithmexception;  

import javax.swing.jbutton;  

import javax.swing.jcombobox;  

import javax.swing.jlabel;  

import javax.swing.jpanel;  

import javax.swing.jscrollpane;  

import javax.swing.border.emptyborder;  

import com.common.util.systemhwutil;  

import com.string.widget.util.valuewidget;  

import com.swing.component.assistpopuptextarea;  

import com.swing.component.assistpopuptextfield;  

import com.swing.component.componentutil;  

import com.swing.dialog.genericdialog;  

public class generatemd5dialog extends genericdialog {  

    private static final long serialversionuid = -4151740071609032069l;  

    private jpanel contentpane;  

    private assistpopuptextfield sourcetxt;  

    private jcombobox<string> encodingcombobox;  

    private assistpopuptextarea resulttextarea;  

    /** 

     * launch the application. 

     *//* 

    public static void main(string[] args) { 

        eventqueue.invokelater(new runnable() { 

            public void run() { 

                try { 

                    generatemd5dialog frame = new generatemd5dialog(); 

                    frame.setvisible(true); 

                } catch (exception e) { 

                    e.printstacktrace(); 

                } 

            } 

        }); 

    }*/  

     * create the frame. 

    public generatemd5dialog(boolean modal) {  

        settitle("生成md5值");  

        setmodal(modal);  

        setloc(450, 300);  

        contentpane = new jpanel();  

        contentpane.setborder(new emptyborder(5, 5, 5, 5));  

        setcontentpane(contentpane);  

        gridbaglayout gbl_contentpane = new gridbaglayout();  

        gbl_contentpane.columnwidths = new int[]{0, 0, 0, 0};  

        gbl_contentpane.rowheights = new int[]{0, 0, 0, 0, 0};  

        gbl_contentpane.columnweights = new double[]{0.0, 0.0, 1.0, double.min_value};  

        gbl_contentpane.rowweights = new double[]{0.0, 0.0, 0.0, 1.0, double.min_value};  

        contentpane.setlayout(gbl_contentpane);  

        jlabel label = new jlabel("原文本");  

        gridbagconstraints gbc_label = new gridbagconstraints();  

        gbc_label.insets = new insets(0, 0, 5, 5);  

        gbc_label.gridx = 0;  

        gbc_label.gridy = 0;  

        contentpane.add(label, gbc_label);  

        sourcetxt = new assistpopuptextfield();  

        gridbagconstraints gbc_sourcetxt = new gridbagconstraints();  

        gbc_sourcetxt.insets = new insets(0, 0, 5, 0);  

        gbc_sourcetxt.fill = gridbagconstraints.horizontal;  

        gbc_sourcetxt.gridx = 2;  

        gbc_sourcetxt.gridy = 0;  

        contentpane.add(sourcetxt, gbc_sourcetxt);  

        sourcetxt.setcolumns(10);  

        jlabel label_1 = new jlabel("檔案編碼");  

        gridbagconstraints gbc_label_1 = new gridbagconstraints();  

        gbc_label_1.insets = new insets(0, 0, 5, 5);  

        gbc_label_1.gridx = 0;  

        gbc_label_1.gridy = 1;  

        contentpane.add(label_1, gbc_label_1);  

        encodingcombobox = new jcombobox<string>();  

        gridbagconstraints gbc_encodingcombobox = new gridbagconstraints();  

        gbc_encodingcombobox.insets = new insets(0, 0, 5, 0);  

        gbc_encodingcombobox.fill = gridbagconstraints.horizontal;  

        gbc_encodingcombobox.gridx = 2;  

        gbc_encodingcombobox.gridy = 1;  

        contentpane.add(encodingcombobox, gbc_encodingcombobox);  

        //檔案的編碼,window裡面一般是gbk,linux中一般是utf-8  

        encodingcombobox.additem(systemhwutil.empty);  

        encodingcombobox.additem(systemhwutil.charset_utf);  

        encodingcombobox.additem(systemhwutil.charset_gbk);  

        encodingcombobox.additem(systemhwutil.charset_gb2312);  

        encodingcombobox.additem(systemhwutil.charset_iso88591);  

        //設定預設選中的項  

        encodingcombobox.setselectedindex(0);  

        jpanel panel = new jpanel();  

        gridbagconstraints gbc_panel = new gridbagconstraints();  

        gbc_panel.insets = new insets(0, 0, 5, 0);  

        gbc_panel.gridwidth = 3;  

        gbc_panel.fill = gridbagconstraints.both;  

        gbc_panel.gridx = 0;  

        gbc_panel.gridy = 2;  

        contentpane.add(panel, gbc_panel);  

        jbutton generatemdbutton = new jbutton("生成");  

        generatemdbutton.addactionlistener(new actionlistener() {  

                string inputtext=sourcetxt.gettext();  

                string charset=getselecteditem4combobox(encodingcombobox);  

                if(valuewidget.isnullorempty(charset)){  

                    charset=systemhwutil.curr_encoding;  

                try {  

                    string md5 = systemhwutil.getmd5(inputtext,charset);  

                    resulttextarea.settext(md5);  

                } catch (nosuchalgorithmexception e1) {  

                    e1.printstacktrace();  

                } catch (unsupportedencodingexception e1) {  

        panel.add(generatemdbutton);  

        resulttextarea = new assistpopuptextarea();  

        jbutton btncopy = componentutil.getcopybtn(resulttextarea);  

        panel.add(btncopy);  

        jscrollpane scrollpane = new jscrollpane();  

        gridbagconstraints gbc_scrollpane = new gridbagconstraints();  

        gbc_scrollpane.gridwidth = 3;  

        gbc_scrollpane.fill = gridbagconstraints.both;  

        gbc_scrollpane.gridx = 0;  

        gbc_scrollpane.gridy = 3;  

        contentpane.add(scrollpane, gbc_scrollpane);  

        //結果文本域  

        resulttextarea.setlinewrap(true);  

        resulttextarea.setwrapstyleword(true);  

        resulttextarea.seteditable(false);  

        scrollpane.setviewportview(resulttextarea);  

}  

 調用:

java swing常用代碼片段

if (command.equals(menuutil2.action_create_md5)) {  

            generatemd5dialog generatemd5dialog=new generatemd5dialog(true/*是否是模态*/);  

            generatemd5dialog.setvisible(true);  

(9)彈出選擇檔案對話框

java swing常用代碼片段

private void choosedestfile(jtextarea ta,string picformat){  

        jfilechooser chooser = new jfilechooser();  

        chooser.setfileselectionmode(jfilechooser.files_only);  

        file selectedfile=new file("c:\\users\\administrator\\pictures\\"+timehwutil.formatdate(new date(), "yyyymm"));  

        //home目錄應該動态擷取  

        if(!valuewidget.isnullorempty(selectedfile)){  

            chooser.setselectedfile(selectedfile);  

        chooser.setname("二維碼."+picformat);  

        filenameextensionfilter filter = new filenameextensionfilter(  

                "picture files", picformat, "二維碼");  

            chooser.setfilefilter(filter);  

        chooser.setdialogtype(jfilechooser.save_dialog);  

        chooser.setcontrolbuttonsareshown(true);  

        chooser.setdialogtitle("儲存二維碼");  

        //            chooser.setvisible(true);  

        int result = chooser.showsavedialog(ta);  

        system.out.println("new file:" + result);  

        if (result == joptionpane.ok_option)  

        {  

            selectedfile = chooser.getselectedfile();  

            if(! systemhwutil.ishassuffix(selectedfile)){  

                selectedfile=new file(selectedfile.getabsolutepath()+ systemhwutil.english_period+picformat);  

            imagehwutil.genericimage(ta, selectedfile, picformat);  

            system.out.println("select file:" + selectedfile);  

(10)在表格上增加菜單

java swing常用代碼片段

private mouseinputlistener getmouseinputlistener(final jtable jtable) {  

        return new mouseinputlistener() {  

            public void mouseclicked(mouseevent e) {  

                processevent(e);  

            /*** 

             * //in order to trigger left-click the event 

             */  

            public void mousepressed(mouseevent e) {  

                processevent(e);// is necessary!!!  

            public void mousereleased(mouseevent e) {  

                // processevent(e);  

                if (e.getbutton() == mouseevent.button3) {// right click  

                    jpopupmenu popupmenu = new jpopupmenu();  

                    jmenuitem runm = new jmenuitem(action_command_run);  

                    jmenuitem copyparameterm = new jmenuitem(action_command_copy_request_parameter);  

                    jmenuitem copyresponsem = new jmenuitem(action_command_copy_response);  

                    jmenuitem cleanresultm = new jmenuitem("清空結果");  

                    // jmenuitem editm=new jmenuitem("edit");  

                    mymenuactionlistener ymenuactionlistener = new mymenuactionlistener();  

                    runm.addactionlistener(ymenuactionlistener);  

                    copyparameterm.addactionlistener(ymenuactionlistener);  

                    copyresponsem.addactionlistener(ymenuactionlistener);  

                    cleanresultm.addactionlistener(ymenuactionlistener);  

                    popupmenu.add(runm);  

                    popupmenu.add(copyparameterm);  

                    popupmenu.add(copyresponsem);  

                    popupmenu.add(cleanresultm);  

                    popupmenu.show(e.getcomponent(), e.getx(), e.gety());  

            public void mouseentered(mouseevent e) {  

            public void mouseexited(mouseevent e) {  

            public void mousedragged(mouseevent e) {  

            public void mousemoved(mouseevent e) {  

            private void processevent(mouseevent e) {  

                // right-click on  

                if ((e.getmodifiers() & mouseevent.button3_mask) != 0) {  

                    // system.out.println(e.getmodifiers());  

                    // system.out.println("right-click on");  

                    int modifiers = e.getmodifiers();  

                    modifiers -= mouseevent.button3_mask;  

                    modifiers |= mouseevent.button1_mask;  

                    mouseevent ne = new mouseevent(e.getcomponent(), e.getid(),  

                            e.getwhen(), modifiers, e.getx(), e.gety(),  

                            e.getclickcount(), false);  

                    jtable.dispatchevent(ne);// in order to trigger left-click  

                    // the event  

        };  

java swing常用代碼片段

private void rendtable(){  

        parametertable_1.getcolumnmodel().getcolumn(2)  

        .setcelleditor(new mybuttoneditor());  

        .setcellrenderer(new mybuttonrender());  

        final mouseinputlistener mouseinputlistener = getmouseinputlistener(parametertable_1);//  

        parametertable_1.addmouselistener(mouseinputlistener);  

 參考:

http://hw1287789687.iteye.com/blog/2230780

http://hw1287789687.iteye.com/blog/2227989

http://hw1287789687.iteye.com/blog/2173977

http://hw1287789687.iteye.com/blog/2003105