(1)复制全部

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);
}
获取一个"复制"按钮

/***
* 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)黏贴

btnpasteafterdel.addactionlistener(new actionlistener() {
string content = windowutil.getsysclipboardtext();
if (valuewidget.isnullorempty(content)) {
gettextarea().settext(content);
获取一个黏贴按钮:

* 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 增加快捷键

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 实现如下:

* 通过时间间隔来判断是否是双击(不是鼠标,是键盘)
* @param delta
* @return
*/
public static boolean isdoubleclick(long delta){
return (delta<300&&delta>100);
}
(4)使jtextarea 自动换行

resulttextpane = new assistpopuptextarea();
resulttextpane.setlinewrap(true);
resulttextpane.setwrapstyleword(true);
(5)设置表格数据

private void settabledata2(object[][] datas) {
defaulttablemodel model = new defaulttablemodel(datas, columnnames);
parametertable_1.setmodel(model);
this.parametertable_1.setrowheight(30);
rendtable();
(6)获取表格的数据

* 获取表格中的请求要素
*
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)获取组件对话框中的数据

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)一个简单的模态窗口(对话框)

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);
}
调用:

if (command.equals(menuutil2.action_create_md5)) {
generatemd5dialog generatemd5dialog=new generatemd5dialog(true/*是否是模态*/);
generatemd5dialog.setvisible(true);
(9)弹出选择文件对话框

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)在表格上增加菜单

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
};

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