`

swing 对文本域截图

阅读更多

swing 对文本域截图

直接上代码:

 /***
	     * convert JTextArea to image
	     * @param ta
	     * @param destFile
	     * @param format
	     */
	    public static BufferedImage generateImage(JComponent ta,File destFile,String format,Integer specifiedHeight,Integer specifiedWidth){//TODO 如何提高分辨率
	    	int height=ta.getHeight();
			int width=ta.getWidth();
	    	if(specifiedHeight!=null&&specifiedHeight!=SystemHWUtil.NEGATIVE_ONE){//如果指定了高度
	    		height=specifiedHeight;
	    	}
			if(specifiedWidth!=null&&specifiedWidth!=SystemHWUtil.NEGATIVE_ONE){//如果指定了高度
				width=specifiedWidth;
			}
            BufferedImage img = new BufferedImage(width * 4, height * 4, BufferedImage.TYPE_INT_RGB);
            Graphics2D g2d = img.createGraphics();
            g2d.scale(4, 4);
           
	        ta.printAll(g2d);
	        g2d.dispose();
	        if(!ValueWidget.isNullOrEmpty(destFile)){
	        	try {
		            ImageIO.write(img, format/*"jpg"*/, destFile);
		        } catch (IOException ex) {
		            ex.printStackTrace();
		        }
	        }

	        return img;
		}

 

提高分辨率:

 

 

调用:

 /***
     * 截图,截屏
     * @param ta
     * @param specifiedHeight
     * @param specifiedWidth
     */
    public static void generateImageAndCopy(JTextComponent ta, Integer specifiedHeight,Integer specifiedWidth) {
		BufferedImage img = ImageHWUtil.generateImage(ta, null, "jpg"/*picFormat*/,specifiedHeight,specifiedWidth);
		if(ValueWidget.isNullOrEmpty(img)){
			return;
		}
		ComponentUtil.setClipboardImage(ta.getParent(),img);
		ToastMessage.toast("复制图片到剪切板",3000);
	}
/***
	 * 复制图片到剪切板
	 * @param image
	 */
	public static void setClipboardImage(Container frame, final Image image) {
		Transferable trans = new Transferable() {
			@Override
			public Object getTransferData(DataFlavor flavor)
					throws UnsupportedFlavorException, IOException {
				if (isDataFlavorSupported(flavor)) {
					return image;
				}
				throw new UnsupportedFlavorException(flavor);
			}

			@Override
			public DataFlavor[] getTransferDataFlavors() {
				return new DataFlavor[] { DataFlavor.imageFlavor };
			}

			@Override
			public boolean isDataFlavorSupported(DataFlavor flavor) {
				return DataFlavor.imageFlavor.equals(flavor);
			}
		};
		
		frame.getToolkit().getSystemClipboard().setContents(trans, null);
	}

 

Try creating the BufferedImage with twice the size (ie. size.width * 2, size.height * 2), then set ig's scale to 2 and g2draw's scale to 0.5.

参考:http://stackoverflow.com/questions/31393438/java-swing-bufferedimage-poor-quality

 

 

 

 

  • 大小: 70.7 KB
0
1
分享到:
评论

相关推荐

    编写一个对输入的英文单词按照字典排序的程序,界面如图,当在一个文本域输入若干个英文字单词,单击字典排序按钮,另一个文本域

    编写一个对输入的英文单词按照字典排序的程序,界面如图,当在一个文本域输入若干个英文字单词,单击字典排序按钮,另一个文本域 对输入的英文单词进行排序;当按清空按钮,另一个文本区域的内容同时清空。要求通过...

    如果右键单机文本域会弹出美观的日历控件

    基于swing界面开发,可以选择出美观的时间选择界面,让用户感觉舒服

    Java_Swing_项目使用.doc

    Java_Swing控件使用方法详解文本框 (按钮 复选框 单选按钮 下拉列表 密码框 文本域 分组按钮)

    Java Swing程序设计

    Java Swing程序设计 JCheckBox复选框组件 JComboBox选择框窗组件 JList列表框组件 JTextArea文本域组件 窗体的显示位置及大小(图) 全部的综合应用之二:计算器的实现 等等等等

    swing和swt

    AWT的作用是给用户提供基本的界面构件,例如按钮、列表、菜单、文本域等等。AMT 构件主要是用来建立图形用户界面的独立平台。此外,AWT还提供事件处理结构、支持剪贴板、数据传输和图像操作。随着2D API的出现,AWT...

    java swing综合程序

    一步一步地实现菜单栏(JMenuBar)工具栏(JPopupMenu)组合框(JComboBox)复选框(JCheckBox)单选按钮(JRadioButton)文本域的综合应用(三) 源程序

    java功能记事本实现课设

    本项目一共有两个类文件 第一个类文件是TextPad.java,实现了使用swing,awt来绘制图形化界面,将菜单栏组件等设 ... 件操作,将文件中的内容写入功能记事本的文本域和将文本域内的 文字写入文件中的功能。

    Javaswing登录页面的实现

    // 创建文本域用于用户输入 this.userText.setBounds(145, 80, 165, 25); this.panel.add(this.userText); // 注册 this.registerButton.setFont(new Font("宋体", 1, 15)); this.registerButton....

    Java Swing JTextArea文本区域的实现示例

    主要介绍了Java Swing JTextArea文本区域的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Java通讯录系统全部源码

    //声明用户名文本域 private JPasswordField passwordJPasswordField=new JPasswordField(); //声明密码输入域 private JButton[] arrayJButton={new JButton("登 录"),new JButton("注 册")}; //声明包含两个...

    java投票管理系统(源码)

    7.点击“保存结果”会弹出一个文本域对话框,里面有刚刚统计的结果,ctrl+a全部选中,再ctrl+c复制,这样就可以将结果粘贴到别处保存下来。 8.点击“刷新”后回到主界面,重新设置候选人,进行下一轮投票

    MIE J2ME UI库 v1.0

    MIE提供了一套基本的UI组件,包括文本标签、文本框、文本域、按钮、单选框、复选框、下拉菜单、对话框、菜单、进度条、分栏组件等。UI组件具有简洁、清爽的风格,并且使用简单方便,用户可以通过对组件Style对象的...

    AWT基础知识

    AWT并没有为GUI组件提供真正的实现,而是调用运行平台的GUI组件来创建和平台一致的对等体peers,因此程序中Textarea实际上是windows的多行文本域组件的对等体,具有和他相同的行为。所以,你右键单击textarea会出现...

    chatRoom 聊天室

    /* 设置多行文本域为不可编辑 */ jta.setFont(f); /* 设置多行文本域字体 */ label = new JLabel(name + ":"); /* 创建带有用户名的文本标签 */ label.setFont(f); /* 设置文本标签字体 */ jtf = new ...

    疯狂JAVA讲义

    学生提问:为什么即使我没有给多行文本域编写右键菜单,但当我在多行文本域上单击右键时一样会弹出右键菜单? 418 11.7 在AWT中绘图 418 11.7.1 画图的实现原理 418 11.7.2 使用Graphics类 419 11.8 处理位图 ...

    Java2核心技术.part5

    9.3 3文本域变化跟踪 9.3.4密码域 9.3.5格式化的输入域 9.3.6文本区 9.4选择组件 9.4.1复选框 9.4.2单选按钮 9.4.3边界 9.4.4组合框 9.4.5滑块 9.4.6 JSpinner组件 9.5菜单 ...

    Java2核心技术.part3

    9.3 3文本域变化跟踪 9.3.4密码域 9.3.5格式化的输入域 9.3.6文本区 9.4选择组件 9.4.1复选框 9.4.2单选按钮 9.4.3边界 9.4.4组合框 9.4.5滑块 9.4.6 JSpinner组件 9.5菜单 ...

    Java2核心技术.part1

    9.3 3文本域变化跟踪 9.3.4密码域 9.3.5格式化的输入域 9.3.6文本区 9.4选择组件 9.4.1复选框 9.4.2单选按钮 9.4.3边界 9.4.4组合框 9.4.5滑块 9.4.6 JSpinner组件 9.5菜单 9.5.1菜单创建 ...

    Java2核心技术.part6

    9.3 3文本域变化跟踪 9.3.4密码域 9.3.5格式化的输入域 9.3.6文本区 9.4选择组件 9.4.1复选框 9.4.2单选按钮 9.4.3边界 9.4.4组合框 9.4.5滑块 9.4.6 JSpinner组件 9.5菜单 ...

    Java2核心技术.part4

    9.3 3文本域变化跟踪 9.3.4密码域 9.3.5格式化的输入域 9.3.6文本区 9.4选择组件 9.4.1复选框 9.4.2单选按钮 9.4.3边界 9.4.4组合框 9.4.5滑块 9.4.6 JSpinner组件 9.5菜单 ...

Global site tag (gtag.js) - Google Analytics