Java Swing – 闪烁的Canvas图形
发布时间:2020-12-15 08:45:55 所属栏目:Java 来源:网络整理
导读:我必须编写一个简单的 Java应用程序,它可以加载图片,以GUI形式显示,允许用户应用一些转换,并显示转换后的图片. 我的解决方案工作正常,但UI有点闪烁,因为重绘方法调用太频繁(例如当用户使用JSlider缩放图像时) 我的代码看起来像这样: public class ImageCanv
我必须编写一个简单的
Java应用程序,它可以加载图片,以GUI形式显示,允许用户应用一些转换,并显示转换后的图片.
我的解决方案工作正常,但UI有点闪烁,因为重绘方法调用太频繁(例如当用户使用JSlider缩放图像时) 我的代码看起来像这样: public class ImageCanvas extends Canvas { private BufferedImage image; // ... @Override public void paint(Graphics g) { Graphics2D g2d = (Graphics2D) g; if(image != null) { // I draw out the image... } } public void setImage(BufferedImage image) { this.image = image; this.repaint(); } public void setRotation(double rotation) { this.rotation = rotation; this.repaint(); } public void setScale(double scaleX,double scaleY) { //set the scaling field,then repaint .... } // and so on... } 当然,我在我的主UI上有一个ImageCanvas控件,我只是调用公共方法(参见上面的“setRotation”方法),它重绘了画布区域.我知道这是一个简单的问题,但我甚至没有在Canvas上找到DoubleBuffered属性…… 任何帮助赞赏. 解决方法
双缓冲内置于Swing(即JComponent派生)类.
如果你想要内置的双缓冲,你应该扩展JPanel而不是Canvas,并覆盖paintComponent,而不是绘制. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- java – 将多个JProgressBar添加到JTable的Table
- configure JDBCRealm JAAS for mysql and tomcat
- java – 无效或损坏的jarfile /usr/local/bin/se
- java – 使用频率从android获取超声波
- java – XmlAdapter到JAXB绑定Joda时间间隔?
- java – 禁用apache HTTP Client的日志记录?
- JavaWeb导出Excel文件并弹出下载框
- 使用套接字编程将数据从Java发送到C.
- java – 当setAutoCreateRowSorter为true时刷新J
- java – 如何设置默认方法参数值?
热点阅读