`

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
分享到:
评论

相关推荐

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

    在这个示例中,`getWords()`方法从左侧文本域的输入中提取单词,`sortWords()`方法对这些单词进行字典排序,最后在“字典排序”按钮的事件处理中,更新右侧文本域的内容。而“清空”按钮的事件处理则调用`clearText...

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

    这部分代码可能包括对 `Calendar` 类和 `Date` 类的使用,以及 `SimpleDateFormat` 进行日期格式化。 7. **鼠标事件处理**: - 通过 `MouseListener` 的实现,可以捕捉到用户在日历上的点击事件。例如,当用户点击...

    JAVA文本域插入表情

    在Java编程中,文本域(Text Pane)是Swing组件之一,用于显示和编辑多行文本,它支持富文本格式,比如字体、颜色、样式等。在某些应用场景中,我们可能需要在文本域中插入表情,以增强用户体验或提供更丰富的信息...

    JAVA文本域显示不同字体颜色的文字

    在Java编程中,实现文本域显示不同颜色的文字主要涉及到Swing库中的JTextPane组件。JTextPane是一个可编辑的文本组件,支持富文本格式,能够处理不同的样式,包括字体、颜色等。以下是对这个主题的详细解释: 1. **...

    java swing漂亮界面 超酷 javaswing教程

    4. **组件定制**:Swing 允许你通过继承和重写方法来自定义组件的行为和外观,比如创建一个带有特殊功能的按钮或一个有特定颜色的文本域。 5. **JTable和JTree**:这两者是Swing中用于展示数据的组件,JTable用于...

    精通Java Swing程序设计(中文CHM)

    - JButton、JLabel、JTextField、JTextArea、JCheckBox、JRadioButton等:Swing中的常用组件,分别对应按钮、标签、文本框、文本域、复选框和单选按钮。 2. **布局管理器** - FlowLayout:按照从左到右,从上到下...

    Java_Swing的复杂控件

    例如,在示例1中,我们使用JTextArea和JScrollPane创建了一个文本域练习的界面,用户可以输入信息,然后将信息追加到文本域中,并可以滚动查看。 此外,JTextArea还可以触发DocumentEvent事件,当文本区中的文本...

    基于Java swing组件实现简易计算器

    4. JTextArea组件:JTextArea是Java swing组件中的一种文本域组件,用于创建一个文本输入框。例如:`JTextArea ta = new JTextArea();` 5. GridLayout布局管理器:GridLayout是一种网络式的布局管理器,将容器空间...

    Swing使用范例.rar

    你可以在这个框架中添加其他组件,如按钮、文本域等。 2. **JComponent**: 所有Swing组件都继承自JComponent,它是所有Swing组件的基础。JComponent提供了绘制、事件处理、布局管理等基本功能。 3. **布局管理器...

    基于swing的本地经验总结系统

    Swing组件包括按钮(Button)、文本输入框(TextField)、文本域 JTextArea、列表框(JList)、组合框(JComboBox)、面板(JPanel)、滚动面板(JScrollPane)、对话框(JDialog)、菜单(JMenu)和菜单项(JMenuItem)等。...

    Java Swing的基本用法

    1. **Swing组件**:Swing提供了多种组件,如按钮(JButton),文本框(JTextField),标签(JLabel),文本域(JTextArea),列表(JList),表格(JTable)和树(JTree)等。这些组件都是JComponent的子类,可以通过各种属性和...

    java+swing漂亮软件界面+超酷+以及javaswing教程.zip

    1. **组件使用**:讲解如何使用JFrame(窗口)、JButton(按钮)、JLabel(标签)、JTextArea(多行文本域)、JTextField(单行文本输入框)等基本组件,以及如何将它们添加到布局中。 2. **布局管理器**:Swing...

    java swing实例源码

    例如,ActionListener 可以监听按钮点击事件,DocumentListener 可以监听文本域内容的改变。通过实现相应接口或继承抽象类,可以添加自定义的事件处理逻辑。 4. **模型-视图-控制器(MVC)**:Swing 遵循MVC设计...

    简单好用的GUI界面可视化swing

    1. **Swing组件**:Swing提供了多种组件,如JButton、JLabel、JTextField、JTextArea、JComboBox、JTable等,它们对应于常见的GUI元素,如按钮、标签、文本框、文本域、下拉框和表格。开发者可以根据需要组合这些...

    swing组件介绍(一)

    1. **基础组件**:Swing提供了许多基础组件,如按钮(JButton)、文本框(JTextField)、标签(JLabel)、复选框(JCheckBox)、单选按钮(JRadioButton)、滚动条(JScrollBar)、文本域(JTextArea)和列表(JList...

    JAVA图形化界面SWING

    这两个文件可能包含了对应角色的界面设计,比如按钮、文本域或者进度条,用于展示服务器状态或接收用户输入。 `Snake.java` 很可能是一个实现经典游戏"贪吃蛇"的程序。在Swing中,我们可以使用JPanel作为游戏的画布...

    java Swing实现的仿qq

    DocumentListener,可以监控文本域的变化,例如在输入用户名和密码时提供实时反馈。为了实现聊天功能,还需要添加MessageListener,监听新消息的到来,并在UI上展示。 在设计界面时,Swing提供了多种布局管理器,如...

    JFC Swing

    7. **组件库**:Swing组件丰富多样,包括按钮(JButton)、文本域(JTextField)、标签(JLabel)、列表(JList)、表格(JTable)、树(JTree)和滚动面板(JScrollPane)等。 8. **模型-视图-控制器(MVC)**:...

    java swing综合程序

    我们将深入探讨如何使用Swing组件构建一个功能丰富的用户界面,包括菜单栏(JMenuBar)、工具栏(JPopupMenu)、组合框(JComboBox)、复选框(JCheckBox)和单选按钮(JRadioButton),以及文本域(JTextArea)的...

    java swing界面开发的班级管理系统

    1. **Swing组件**:Swing 提供了多种组件,如 JButton、JLabel、JTextField、JTextArea、JTable等,这些组件可以用于构建各种用户界面元素,例如按钮、标签、文本框、文本域和表格。在班级管理系统中,可能用到...

Global site tag (gtag.js) - Google Analytics