1.背景最近想做一个实用的小工具,能屏幕截图,录屏和录制课件,简单的图像处理,和制作gif表情包。翻出了很久以前用Javaawt/swing写的一个屏幕截图小程序,能运行,但是屏幕截图到剪贴板后,发现不能直接粘贴到网页,很纳闷。研究了半天,猜想是剪贴板上的BufferedImage格式不被网页识别,但如果贴到别的应用中,如word,QQ聊天中,又是可以的。不得已,切换到JavaFX提供的剪贴板功能,发现居然是可以的,看来JavaFX比swing更好用一点。于是决定将该程序移植到JavaFX框架上。问题缘起Java屏幕截图到剪贴板:Robotro=newRobot();Toolkittk=Too
我遇到了一个Swing问题,该问题仅在计算机显示器关闭时出现,但我的Swing应用程序继续在后台运行。似乎每当显示器关闭时,Swing/AWT都会取消所有绘制操作,从而导致GUI中出现许多显示问题,一旦显示器重新打开,这些问题就会立即出现。例如,当我使用自定义JNI函数关闭监视器并随后打开一个简单的消息对话框时,当监视器重新打开时消息对话框是空白的:但它在下一次重绘后正确绘制:这是Swing的预期行为吗?有没有办法指示Swing继续在屏幕上绘图,即使显示器已关闭?编辑:这是一个SSCCE:packagetest;importjavax.swing.JOptionPane;importj
在AWT应用程序中,我需要设置TextField的边框颜色。在JTextField中,我知道我们确实可以做到以下几点JTextFieldtf=newJTextField();tf.setBorder(BorderFactory.createLineBorder(Color.decode("#2C6791")));但是setBorder()方法在awtTextField中不可用。这个问题有什么解决方法吗? 最佳答案 如您所见,AWTTextField不支持边框。您可以通过将文本字段放在比文本字段稍大的Panel中并更改面板的背景颜色来
编辑:如果有人还有任何其他提高屏幕捕获性能的建议,请随时分享,因为它可能会完全解决我的问题!各位开发者大家好,我正在为自己开发一些基本的屏幕捕获软件。截至目前,我已经获得了一些使用java.awt.Robot将屏幕捕获为BufferedImage的概念证明/修补代码。然后我在指定的时间内进行此捕获,然后将所有图片转储到磁盘。从我的测试中,我每秒获得大约17帧。试验#1时长:15秒捕获的图像:255试验#2时长:15秒捕获的图像:229显然,这对于真正的屏幕捕获应用程序来说还不够好。特别是因为这些捕获只是我在我的IDE中选择一些文本,而不是图形密集型的东西。我现在有两个类(class),
我有一个Serializable对象,它应该包含一个java.awt.Image作为它的成员。我应该如何序列化它?(从不太清楚的第一个版本编辑,抱歉。) 最佳答案 ImageIcon实现了Serializable,它可以用来包装一个Image类http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/ImageIcon.html 关于java-如何最好地序列化java.awt.Image?,我们在StackOverflow上找到一个类似的问题
我正在创建一个Java应用程序,它将执行一些处理然后需要显示一条消息以提供给用户反馈。但是,它似乎非常慢-需要超过两秒才能返回。我将源代码剥离到明显的罪魁祸首,这是使用的代码:packageSwingPlay;importjavax.swing.JFrame;publicclassDialog{publicstaticvoidmain(String[]args){JFrameframe=newJFrame("DialogDemo");}}我正在从命令行执行此操作:java-classpath.SwingPlay.Dialog如您所见-我只创建了一个JFrame,甚至没有显示它。如果相关
我想了解java.awt.Dialog是如何实现模态(阻塞其他窗口)的?是的,我尝试阅读java.awt.Dialog的代码,但我有点迷失在其中。所以我想简要地了解一下他们的工作。他们是否禁用所有其他窗口的所有事件?谢谢普雷姆 最佳答案 它的系统依赖。在Windows上,主事件循环被修改。大多数情况下,打开非模态对话框并手动锁定底层窗口会更好(例如,将玻璃Pane设置为根Pane并禁用它,或者阻止所有设置自定义焦点管理器的事件)。 关于java-java.awt.dialog是如何实现模
我正在尝试设置JavaAWT应用程序的图标,以便它在Windows10任务栏上以native分辨率呈现(包括当桌面缩放比例设置为高于100%时)。似乎默认情况下,如果一个可执行文件嵌入了一个包含多种尺寸的图标,Windows似乎会选择一个比任务栏图标的实际尺寸大的尺寸并缩小它(在100%比例下它将32像素的图标调整为24,即使提供了24像素的图标,其他比例也类似。)我已经解决了C++MFC应用程序的这个问题,方法是只加载正确大小的图标作为资源并将WM_SETICON消息发送到窗口,这会在任务栏和alt-tab对话框上生成漂亮的清晰图标。smallIcon=(HICON)LoadImag
我正在尝试实现以下“网格”布局。该类正在扩展java.awt.Canvas,并在paint函数中绘制这些形状(或线条)。为什么Canvas?检查here,最初尝试做类似的事情。更新MCVE获取上述“布局”的代码:importjava.awt.BasicStroke;importjava.awt.BorderLayout;importjava.awt.Canvas;importjava.awt.Color;importjava.awt.Dimension;importjava.awt.Graphics;importjava.awt.Graphics2D;importjava.awt.ev
我正在尝试使用JavaSwing构建一个简单、轻量级且响应迅速的应用程序。但是,当它启动时,在窗口(JFrame)出现之前会有明显的延迟(>500毫秒)。我已经追踪到java.awt.Window类的构造函数,它是JFrame的祖先。奇怪的是,构造函数只在第一次调用时慢。如果我创建多个JFrame对象,则第一个对象在构造函数中花费的时间约为600毫秒,但对于后续对象通常测量为0毫秒。这是一个简单的示例,在我的系统上,它显示了第一个构造函数调用的显着延迟,但没有显示第二个:publicstaticvoidmain(Stringargs[]){java.awt.EventQueue.inv