- 浏览: 674734 次
- 性别:
- 来自: 北京
最新评论
-
mushiyu123:
...
iText官方教程 -
sf_dream:
楼主,你那个放到没有安装jdk的电脑上可以运行不?
eclipse导出jar文件再将它转换成exe可执行文件详解 -
zqb666kkk:
哥们 没图了 弄个附件 文档 供我们下载吧
PowerDesigner 使用教程(很具体,很实用) -
dhkswh:
楼主写的代码超级多错...不过总算看懂了,楼主是class.A ...
java swing 弹出对话框与父窗口传值实例
java swing 基本实现QQ截屏功能,很简陋但有学习价值
CpFrame.java ,CaptureScreenhh.java和icon.png
CpFrame.java
package captuhhhhh; import java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import javax.imageio.ImageIO; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import javax.swing.UIManager; import org.dyno.visual.swing.layouts.Constraints; import org.dyno.visual.swing.layouts.GroupLayout; import org.dyno.visual.swing.layouts.Leading; //VS4E -- DO NOT REMOVE THIS LINE! public class CpFrame extends JFrame { private static final long serialVersionUID = 1L; private JButton jButton0; private JButton jButton1; private JLabel jLabel0; private static final String PREFERRED_LOOK_AND_FEEL = "javax.swing.plaf.metal.MetalLookAndFeel"; public CpFrame() { initComponents(); } private void initComponents() { setLayout(new GroupLayout()); add(getJButton1(), new Constraints(new Leading(40, 198, 12, 12), new Leading(109, 10, 10))); add(getJButton0(), new Constraints(new Leading(40, 199, 12, 12), new Leading(47, 10, 10))); add(getJLabel0(), new Constraints(new Leading(44, 10, 10), new Leading(151, 10, 10))); setSize(320, 240); } private JLabel getJLabel0() { if (jLabel0 == null) { jLabel0 = new JLabel(); jLabel0.setText("双击选区保存"); } return jLabel0; } private JButton getJButton1() { if (jButton1 == null) { jButton1 = new JButton(); jButton1.setText("选区保存"); jButton1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { jButton1ActionActionPerformed(event); } }); } return jButton1; } private JButton getJButton0() { if (jButton0 == null) { jButton0 = new JButton(); jButton0.setText("全屏保存"); jButton0.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { jButton0ActionActionPerformed(event); } }); } return jButton0; } private static void installLnF() { try { String lnfClassname = PREFERRED_LOOK_AND_FEEL; if (lnfClassname == null) lnfClassname = UIManager.getCrossPlatformLookAndFeelClassName(); UIManager.setLookAndFeel(lnfClassname); } catch (Exception e) { System.err.println("Cannot install " + PREFERRED_LOOK_AND_FEEL + " on this platform:" + e.getMessage()); } } /** * Main entry of the class. * Note: This class is only created so that you can easily preview the result at runtime. * It is not expected to be managed by the designer. * You can modify it as you like. */ public static void main(String[] args) { installLnF(); SwingUtilities.invokeLater(new Runnable() { @Override public void run() { CpFrame frame = new CpFrame(); frame.setDefaultCloseOperation(CpFrame.EXIT_ON_CLOSE); frame.setTitle("CpFrame"); frame.getContentPane().setPreferredSize(frame.getSize()); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } //全屏 private void jButton0ActionActionPerformed(ActionEvent event) { this.setVisible(false); try{ FileInputStream fis2=null; InputStreamReader isr2=null; BufferedReader br2=null; FileOutputStream fos2=null; OutputStreamWriter osw2=null; BufferedWriter bw2=null; JFileChooser dlg = new JFileChooser(); dlg.setDialogType(JFileChooser.SAVE_DIALOG); dlg.showSaveDialog(null); File getNewFile=dlg.getSelectedFile(); if(getNewFile==null){ this.setVisible(true); }else{ String getNewPath=getNewFile.getPath(); String getNewName=getNewFile.getPath(); String getNewParent=getNewFile.getParent(); //写入新文件 try { Robot robot = new Robot(); BufferedImage get = robot.createScreenCapture(new Rectangle(Toolkit .getDefaultToolkit().getScreenSize())); int wideth=get.getWidth(null); //得到源图宽 int height=get.getHeight(null); //得到源图长 //写新文件 File newFile=new File(getNewPath); if(!newFile.exists()){ newFile.createNewFile(); } fos2=new FileOutputStream(newFile); osw2=new OutputStreamWriter(fos2); ImageIO.write(get,"jpg",newFile);//此方法直接保存,或用以下方法保存 } catch (FileNotFoundException e) { e.printStackTrace(); }finally{ if(bw2!=null){ bw2.close();} if(osw2!=null){ osw2.close();} if(fos2!=null){ fos2.close();} if(br2!=null){ br2.close();} if(isr2!=null){ isr2.close();} } JOptionPane.showMessageDialog(null, "保存成功!"); this.setVisible(true); } } catch(Exception exe){ exe.printStackTrace(); } } //选区 private void jButton1ActionActionPerformed(ActionEvent event) { this.setVisible(false); new CaptureScreenhh(); this.setVisible(true); } }
CaptureScreenhh.java//这段代码改别人的
package captuhhhhh; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import javax.imageio.*; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; import java.awt.image.*; /** * @author jacky.zhu * */ public class CaptureScreenhh extends JFrame implements ActionListener{ private JButton start,cancel,save; private static BufferedImage get; /** Creates a new instance of CaptureScreen */ public CaptureScreenhh() { doStart(); } private void doStart(){ try{ Robot ro=new Robot(); Toolkit tk=Toolkit.getDefaultToolkit(); Dimension di=tk.getScreenSize(); Rectangle rec=new Rectangle(0,0,di.width,di.height); BufferedImage bi=ro.createScreenCapture(rec); JFrame jf=new JFrame(); jf.getContentPane().add(new Temp(jf,bi,di.width,di.height)); jf.setUndecorated(true); jf.setSize(di); jf.setVisible(true); jf.setAlwaysOnTop(true); }catch(Exception exe){ exe.printStackTrace(); } } public static void doSave(BufferedImage get)throws NullPointerException{ try{ FileInputStream fis2=null; InputStreamReader isr2=null; BufferedReader br2=null; FileOutputStream fos2=null; OutputStreamWriter osw2=null; BufferedWriter bw2=null; JFileChooser dlg = new JFileChooser(); dlg.setDialogType(JFileChooser.SAVE_DIALOG); dlg.showSaveDialog(null); File getNewFile=dlg.getSelectedFile(); if(getNewFile==null){ }else{ String getNewPath=getNewFile.getPath(); String getNewName=getNewFile.getPath(); String getNewParent=getNewFile.getParent(); //写入新文件 try { int wideth=get.getWidth(null); //得到源图宽 int height=get.getHeight(null); //得到源图长 //写新文件 File newFile=new File(getNewPath); if(!newFile.exists()){ newFile.createNewFile(); } fos2=new FileOutputStream(newFile); osw2=new OutputStreamWriter(fos2); ImageIO.write(get,"jpg",newFile);//此方法直接保存,或用以下方法保存 // //用Graphics操作,可以改变保存图像的大小,wideth,wideth // BufferedImage tag = new BufferedImage(wideth,wideth,BufferedImage.TYPE_INT_RGB); // tag.getGraphics().drawImage(get,0,0,wideth,height,null); // fos2=new FileOutputStream(getNewPath); //输出到文件流 // JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos2); // encoder.encode(tag); //JPEG编码 } catch (FileNotFoundException e) { e.printStackTrace(); }finally{ if(bw2!=null){ bw2.close();} if(osw2!=null){ osw2.close();} if(fos2!=null){ fos2.close();} if(br2!=null){ br2.close();} if(isr2!=null){ isr2.close();} } JOptionPane.showMessageDialog(null, "保存成功!"); } } catch(Exception exe){ exe.printStackTrace(); } } public void actionPerformed(ActionEvent ae){ if(ae.getSource()==start){ doStart(); } else if(ae.getSource()==cancel){ //System.exit(0); } else if(ae.getSource()==save){ doSave(get); } } public static void main(String args[]){ new CaptureScreenhh(); } } ///////CaptureScreenhh-end---//////////////////////////////////////////////////////////////////////////////////////////// //显示当前的屏幕图像 class Temp extends JPanel implements MouseListener,MouseMotionListener{ enum States{ NORTH_WEST(new Cursor(Cursor.NW_RESIZE_CURSOR)),//表示西北角 NORTH(new Cursor(Cursor.N_RESIZE_CURSOR)), NORTH_EAST(new Cursor(Cursor.NE_RESIZE_CURSOR)), EAST(new Cursor(Cursor.E_RESIZE_CURSOR)), SOUTH_EAST(new Cursor(Cursor.SE_RESIZE_CURSOR)), SOUTH(new Cursor(Cursor.S_RESIZE_CURSOR)), SOUTH_WEST(new Cursor(Cursor.SW_RESIZE_CURSOR)), WEST(new Cursor(Cursor.W_RESIZE_CURSOR)), MOVE(new Cursor(Cursor.MOVE_CURSOR)), DEFAULT(new Cursor(Cursor.DEFAULT_CURSOR)); private Cursor cs; States(Cursor cs){ this.cs=cs; } public Cursor getCursor(){ return cs; } } private BufferedImage bi; private int width,height; private int startX,startY,endX,endY,tempX,tempY; private JFrame jf; private Rectangle select=new Rectangle(0,0,0,0);//表示选中的区域 private Cursor cs;//表示一般情况下的鼠标状态 private States current=States.DEFAULT;// 表示当前的编辑状态 private Rectangle[] rec;//表示八个编辑点的区域 public Temp(JFrame jf,BufferedImage bi,int width,int height){ this.jf=jf; this.bi=bi; this.width=width; this.height=height; this.addMouseListener(this); this.addMouseMotionListener(this); Image icon=Toolkit.getDefaultToolkit().createImage(this.getClass().getResource("icon.png")); cs=Toolkit.getDefaultToolkit().createCustomCursor(icon,new Point(0,0),"icon"); this.setCursor(cs); initRecs(); } private void initRecs(){ rec=new Rectangle[8]; for(int i=0;i<rec.length;i++){ rec[i]=new Rectangle(); } } public void paintComponent(Graphics g){ g.drawImage(bi,0,0,width,height,this); g.setColor(Color.RED); g.drawLine(startX,startY,endX,startY); g.drawLine(startX,endY,endX,endY); g.drawLine(startX,startY,startX,endY); g.drawLine(endX,startY,endX,endY); int x=startX<endX?startX:endX; int y=startY<endY?startY:endY; select=new Rectangle(x,y,Math.abs(endX-startX),Math.abs(endY-startY)); int x1=(startX+endX)/2; int y1=(startY+endY)/2; g.fillRect(x1-2,startY-2,5,5); g.fillRect(x1-2,endY-2,5,5); g.fillRect(startX-2,y1-2,5,5); g.fillRect(endX-2,y1-2,5,5); g.fillRect(startX-2,startY-2,5,5); g.fillRect(startX-2,endY-2,5,5); g.fillRect(endX-2,startY-2,5,5); g.fillRect(endX-2,endY-2,5,5); rec[0]=new Rectangle(x-5,y-5,10,10); rec[1]=new Rectangle(x1-5,y-5,10,10); rec[2]=new Rectangle((startX>endX?startX:endX)-5,y-5,10,10); rec[3]=new Rectangle((startX>endX?startX:endX)-5,y1-5,10,10); rec[4]=new Rectangle((startX>endX?startX:endX)-5,(startY>endY?startY:endY)-5,10,10); rec[5]=new Rectangle(x1-5,(startY>endY?startY:endY)-5,10,10); rec[6]=new Rectangle(x-5,(startY>endY?startY:endY)-5,10,10); rec[7]=new Rectangle(x-5,y1-5,10,10); } public void mouseMoved(MouseEvent me){ if(select.contains(me.getPoint())){ this.setCursor(new Cursor(Cursor.MOVE_CURSOR)); current=States.MOVE; } else{ States[] st=States.values(); for(int i=0;i<rec.length;i++){ if(rec[i].contains(me.getPoint())){ current=st[i]; this.setCursor(st[i].getCursor()); return; } } this.setCursor(cs); current=States.DEFAULT; } } public void mouseExited(MouseEvent me){ } public void mouseEntered(MouseEvent me){ } public void mouseDragged(MouseEvent me){ int x=me.getX(); int y=me.getY(); if(current==States.MOVE){ startX+=(x-tempX); startY+=(y-tempY); endX+=(x-tempX); endY+=(y-tempY); tempX=x; tempY=y; }else if(current==States.EAST){ if(startX>endX){ startX+=(x-tempX); tempX=x; } else{ endX+=(x-tempX); tempX=x; } }else if(current==States.NORTH){ if(startY<endY){ startY+=(y-tempY); tempY=y; }else{ endY+=(y-tempY); tempY=y; } }else if(current==States.WEST){ if(startX<endX){ startX+=(x-tempX); tempX=x; } else{ endX+=(x-tempX); tempX=x; } }else if(current==States.SOUTH){ if(startY>endY){ startY+=(y-tempY); tempY=y; }else{ endY+=(y-tempY); tempY=y; } } else if(current==States.NORTH_EAST){ if(startX>endX){ startX+=(x-tempX); tempX=x; } else{ endX+=(x-tempX); tempX=x; } if(startY<endY){ startY+=(y-tempY); tempY=y; }else{ endY+=(y-tempY); tempY=y; } }else if(current==States.NORTH_WEST){ if(startX<endX){ startX+=(x-tempX); tempX=x; } else{ endX+=(x-tempX); tempX=x; } if(startY<endY){ startY+=(y-tempY); tempY=y; }else{ endY+=(y-tempY); tempY=y; } }else if(current==States.SOUTH_EAST){ if(startY>endY){ startY+=(y-tempY); tempY=y; }else{ endY+=(y-tempY); tempY=y; } if(startX>endX){ startX+=(x-tempX); tempX=x; } else{ endX+=(x-tempX); tempX=x; } }else if(current==States.SOUTH_WEST){ if(startY>endY){ startY+=(y-tempY); tempY=y; }else{ endY+=(y-tempY); tempY=y; } if(startX<endX){ startX+=(x-tempX); tempX=x; } else{ endX+=(x-tempX); tempX=x; } } else{ startX=tempX; startY=tempY; endX=me.getX(); endY=me.getY(); } this.repaint(); } public void mousePressed(MouseEvent me){ tempX=me.getX(); tempY=me.getY(); } public void mouseReleased(MouseEvent me){ System.out.println("mouseReleased"); if(me.isPopupTrigger()){ if(current==States.MOVE){ startX=0; startY=0; endX=0; endY=0; repaint(); } else{ jf.dispose(); } } } public void mouseClicked(MouseEvent me){ BufferedImage get; if(me.getClickCount()==2){ //Rectangle rec=new Rectangle(startX,startY,Math.abs(endX-startX),Math.abs(endY-startY)); Point p=me.getPoint(); if(select.contains(p)){ if(select.x+select.width<this.getWidth()&&select.y+select.height<this.getHeight()){ get=bi.getSubimage(select.x,select.y,select.width,select.height); jf.dispose(); //save.setEnabled(true); CaptureScreenhh.doSave(get); }else{ int wid=select.width,het=select.height; if(select.x+select.width>=this.getWidth()){ wid=this.getWidth()-select.x; } if(select.y+select.height>=this.getHeight()){ het=this.getHeight()-select.y; } get=bi.getSubimage(select.x,select.y,wid,het); jf.dispose(); //save.setEnabled(true); CaptureScreenhh.doSave(get); } } } } }
//运行一下试试
相关推荐
java swing 截屏软件实现,下载文件导入eclipse即可,可运行。
使用Java Swing界面实现数据库基本操作,使用Java Swing界面实现数据库基本操作
本项目是一套java Swing mysql实现简单的购物系统,主要针对计算机相关专业需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本、运行指导视频。 项目都经过严格调试,确保可以运行! 二、技术实现 后端:...
Java Swing界面实现数据库基本操作 Java Swing界面实现数据库基本操作 Java Swing界面实现数据库基本操作 Java Swing界面实现数据库基本操作
java swing 仿QQ 聊天器 源代码
java swing高仿QQ截屏源码,导入ecplise直接运行即可,保证可用,保证高仿,一定不会让您失望。
用java swing 实现的pdf阅读器 很强大 喜欢。。。
Java Swing实现的生命游戏Java Swing实现的生命游戏Java Swing实现的生命游戏 Java Swing实现的生命游戏Java Swing实现的生命游戏Java Swing实现的生命游戏 Java Swing实现的生命游戏Java Swing实现的生命游戏Java ...
java swing 实现的带启动界面的简易截图软件,启动界面有进度条,可保存可粘贴到qq微信,简单实用
java swing实现学生住宿管理系统(源码) java swing实现学生住宿管理系统(源码) java swing实现学生住宿管理系统(源码) java swing实现学生住宿管理系统(源码) java swing实现学生住宿管理系统(源码) java ...
用java实现的简单的qq,有图形化界面,swing开发,可以实现聊天,更换皮肤等简单功能
此代码为java运用poi3.8插件实现运用模版导入导出复杂excel
使用java swing开发的仿qq功能,主要使用多线程、socket,客户端发送消息在服务器端可以接受,还可以两个客户端聊天 ----基于myEcplise写的
java swing mysql实现的酒店管理系统项目源码.zip java swing mysql实现的酒店管理系统项目源码.zip java swing mysql实现的酒店管理系统项目源码.zip java swing mysql实现的酒店管理系统项目源码.zip java swing ...
实现了音乐列表、播放、暂停、上下歌曲切换等音乐播放器基本功能。利用到JavaSwing、多线程、音乐控制等多个知识点。且代码注释详细。欢迎下载~有问题可以私信我噢 ^_^
基本实现了所有QQ的功能,包括聊天,图片传输,添加删除好友,群 同时做了一些美化,比目前其他的java实现的聊天室绝对要好看很多, 数据库用的是Mysql,在压缩包内
我已经介绍过很多学生信息管理系统了,包括Java swing和jsp实现的,今天再介绍一款Java swing实现的,这款与以往不同的是用了一个自写的时间控件,这个大家可以来学习一下,数据库采用的是mysql,采用mvc分层设计...
java swing拖放功能,利用java swing实现java可视组件能够拖放。
仿QQ聊天系统,运用技术java swing,其中用到了大量的线程,socket,特别适合j2se的初学者!内含数据库
主要介绍了基于Java swing组件实现简易计算器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下