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
相关推荐
在这个示例中,`getWords()`方法从左侧文本域的输入中提取单词,`sortWords()`方法对这些单词进行字典排序,最后在“字典排序”按钮的事件处理中,更新右侧文本域的内容。而“清空”按钮的事件处理则调用`clearText...
这部分代码可能包括对 `Calendar` 类和 `Date` 类的使用,以及 `SimpleDateFormat` 进行日期格式化。 7. **鼠标事件处理**: - 通过 `MouseListener` 的实现,可以捕捉到用户在日历上的点击事件。例如,当用户点击...
在Java编程中,文本域(Text Pane)是Swing组件之一,用于显示和编辑多行文本,它支持富文本格式,比如字体、颜色、样式等。在某些应用场景中,我们可能需要在文本域中插入表情,以增强用户体验或提供更丰富的信息...
在Java编程中,实现文本域显示不同颜色的文字主要涉及到Swing库中的JTextPane组件。JTextPane是一个可编辑的文本组件,支持富文本格式,能够处理不同的样式,包括字体、颜色等。以下是对这个主题的详细解释: 1. **...
4. **组件定制**:Swing 允许你通过继承和重写方法来自定义组件的行为和外观,比如创建一个带有特殊功能的按钮或一个有特定颜色的文本域。 5. **JTable和JTree**:这两者是Swing中用于展示数据的组件,JTable用于...
- JButton、JLabel、JTextField、JTextArea、JCheckBox、JRadioButton等:Swing中的常用组件,分别对应按钮、标签、文本框、文本域、复选框和单选按钮。 2. **布局管理器** - FlowLayout:按照从左到右,从上到下...
例如,在示例1中,我们使用JTextArea和JScrollPane创建了一个文本域练习的界面,用户可以输入信息,然后将信息追加到文本域中,并可以滚动查看。 此外,JTextArea还可以触发DocumentEvent事件,当文本区中的文本...
4. JTextArea组件:JTextArea是Java swing组件中的一种文本域组件,用于创建一个文本输入框。例如:`JTextArea ta = new JTextArea();` 5. GridLayout布局管理器:GridLayout是一种网络式的布局管理器,将容器空间...
你可以在这个框架中添加其他组件,如按钮、文本域等。 2. **JComponent**: 所有Swing组件都继承自JComponent,它是所有Swing组件的基础。JComponent提供了绘制、事件处理、布局管理等基本功能。 3. **布局管理器...
Swing组件包括按钮(Button)、文本输入框(TextField)、文本域 JTextArea、列表框(JList)、组合框(JComboBox)、面板(JPanel)、滚动面板(JScrollPane)、对话框(JDialog)、菜单(JMenu)和菜单项(JMenuItem)等。...
1. **Swing组件**:Swing提供了多种组件,如按钮(JButton),文本框(JTextField),标签(JLabel),文本域(JTextArea),列表(JList),表格(JTable)和树(JTree)等。这些组件都是JComponent的子类,可以通过各种属性和...
1. **组件使用**:讲解如何使用JFrame(窗口)、JButton(按钮)、JLabel(标签)、JTextArea(多行文本域)、JTextField(单行文本输入框)等基本组件,以及如何将它们添加到布局中。 2. **布局管理器**:Swing...
例如,ActionListener 可以监听按钮点击事件,DocumentListener 可以监听文本域内容的改变。通过实现相应接口或继承抽象类,可以添加自定义的事件处理逻辑。 4. **模型-视图-控制器(MVC)**:Swing 遵循MVC设计...
1. **Swing组件**:Swing提供了多种组件,如JButton、JLabel、JTextField、JTextArea、JComboBox、JTable等,它们对应于常见的GUI元素,如按钮、标签、文本框、文本域、下拉框和表格。开发者可以根据需要组合这些...
1. **基础组件**:Swing提供了许多基础组件,如按钮(JButton)、文本框(JTextField)、标签(JLabel)、复选框(JCheckBox)、单选按钮(JRadioButton)、滚动条(JScrollBar)、文本域(JTextArea)和列表(JList...
这两个文件可能包含了对应角色的界面设计,比如按钮、文本域或者进度条,用于展示服务器状态或接收用户输入。 `Snake.java` 很可能是一个实现经典游戏"贪吃蛇"的程序。在Swing中,我们可以使用JPanel作为游戏的画布...
DocumentListener,可以监控文本域的变化,例如在输入用户名和密码时提供实时反馈。为了实现聊天功能,还需要添加MessageListener,监听新消息的到来,并在UI上展示。 在设计界面时,Swing提供了多种布局管理器,如...
7. **组件库**:Swing组件丰富多样,包括按钮(JButton)、文本域(JTextField)、标签(JLabel)、列表(JList)、表格(JTable)、树(JTree)和滚动面板(JScrollPane)等。 8. **模型-视图-控制器(MVC)**:...
我们将深入探讨如何使用Swing组件构建一个功能丰富的用户界面,包括菜单栏(JMenuBar)、工具栏(JPopupMenu)、组合框(JComboBox)、复选框(JCheckBox)和单选按钮(JRadioButton),以及文本域(JTextArea)的...
1. **Swing组件**:Swing 提供了多种组件,如 JButton、JLabel、JTextField、JTextArea、JTable等,这些组件可以用于构建各种用户界面元素,例如按钮、标签、文本框、文本域和表格。在班级管理系统中,可能用到...