首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在调整Jframe大小时停止自动重绘()

如何在调整Jframe大小时停止自动重绘()
EN

Stack Overflow用户
提问于 2014-10-04 18:16:53
回答 2查看 6K关注 0票数 1

我还在学习Java,如果有人能帮我,我会很高兴的!

对不起英语不好,我是西班牙人!我正在制作一个瓷砖游戏,游戏使用经典的“游戏循环”,它将引擎限制在60 fine的循环睡眠,然后调用repaint();这很好!但是..。

问题是,当JFrame调整大小或最大化时,就会调用重绘事件!例如,当JFrame最大化/调整大小时,游戏呈现速度为10000 For,但如果没有,游戏呈现将以我设置的速度呈现,因此有一种方法可以禁用自动重绘并使其仅在代码中调用"component.repaint()“时才能工作?

这里的问题不是“游戏循环”,问题是,当调整/最大化渲染游戏时,重新绘制称为自动绘制在更多的fps!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Handling {
static private int fps=0;
static private int fpsfinal=0;
static int frames = 60;
static int frames_skip = 1000 / frames;
static long ticknext = GetTickCount();
static long ticksleep = 0;

public static void Run() {
    for(;;){
        Main.getDevice().repaint();
        fps++;
        ticknext += frames_skip;
        ticksleep = ticknext - GetTickCount();
        if(ticksleep >= 0) {
            try {
                Thread.sleep(ticksleep);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

public static long GetTickCount(){
    return System.currentTimeMillis();
}

public static int GetFPS(){
    fpsfinal=fps;
    fps=0;
    return fpsfinal-2;
}

import java.awt.*;
import java.awt.geom.AffineTransform;
import java.awt.image.ImageObserver;

import javax.swing.*;
public class Game extends JPanel{
private static final long serialVersionUID = 1L;
static boolean dir=true;

@Override 
public void paintComponent(Graphics g){
    super.paintComponent(g);        
    int layout=Main.layout;
    Graphics2D g2d = (Graphics2D) g;
    g.setFont(Resources.GetFont(0));    
    Camera.UpdateCameraAxis();
    Camera.DoCamera();
    Cursor.MouseLoop(); 
    if (layout==0){
        this.setBackground(new Color(210,247,255));
        for(int xx=Math.max( etc....
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-04 19:05:10

所以当JFrame没有最大化的时候

我不知道这为什么会导致问题,因为应该只生成一个重绘请求。

或(调整大小)

我可以看到这是一个问题,因为重新绘制将被调用的每一个像素,您调整帧的大小。在这种情况下,您可以使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Toolkit.getDefaultToolkit().setDynamicLayout(false); 

现在,组件将在调整大小完成后进行验证。

新颜色(210,247,255);

不要使用上面这样的代码,因为更改背景会导致调用repaint(),这将再次调用paintComponent()方法。绘画方法只适用于绘画。

票数 4
EN

Stack Overflow用户

发布于 2014-10-04 19:00:03

“如何在调整Jframe大小时停止自动重绘()”

简单地回答,你控制它。更长的答案,您需要确保在paintComponent方法中,您没有做任何更改状态(用于绘制)的事情。例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    Random random = new Random();
    int x = random.nextInt(100);
    int y = random.nextInt(100);
    int size = random.nextInt(100);
    g.drawRect(x, y, size, size);
}

这里所发生的是,每次GUI重新绘制,这是而不是在您的控制下,矩形将调整大小,而不需要它。因此,如果您希望矩形只在告诉它时重新绘制,则需要确保只操作 paintComponent方法外的的状态(即x、y、size),并且只使用该状态进行绘制。有点像

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Random random = new Random();
int x, y, size;
...
void reset() {
    x = random.nextInt(100);
    y = random.nextInt(100);
    size = random.nextInt(100);
}
...
Timer timer = new Timer(25, new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent e) {
        reset();
        repaint();
    }
}).start();
...
@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);

    g.drawRect(x, y, size, size);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26199008

复制
相关文章
flutter的列表下拉刷新
flutter的列表下拉刷新需要借助一个组件来实现,这个组件的名字是RefreshIndicator,直译过来就是刷新指示灯。
挥刀北上
2021/01/07
4.8K0
flutter的列表下拉刷新
模板代码 - 列表和下拉刷新
摘要总结:本篇文章主要介绍了如何使用ViewStub和ViewStubCompat实现多布局,以便在不同的屏幕尺寸和分辨率下达到较好的展示效果。同时,还介绍了如何使用ViewStub和ViewStubCompat实现内边距和圆角,以及自定义属性在布局中的使用。
用户1172465
2018/01/05
2.9K0
【Flutter】ListView 列表高级功能 ( RefreshIndicator 下拉刷新组件 )
使用 Flutter 提供的 RefreshIndicator 组件 , 可以实现下拉刷新的功能 ;
韩曙亮
2023/03/29
2K0
【Flutter】ListView 列表高级功能 ( RefreshIndicator 下拉刷新组件 )
微信小程序列表数据的局部刷新
本文由来源 17,由 system_mush 整理编辑,其版权均为 17 所有,文章内容系作者个人观点,不代表 Java架构师必看 对观点赞同或支持。如需转载,请注明文章来源。
Java架构师必看
2020/04/10
2.6K0
RecyclerView 刷新列表数据的 notifyDataSetChanged() 为什么是昂贵的?
当列表数据变更时,调用 notifyDataSetChanged() 是最省事的。无需关心变更的细节,一股脑统统刷一遍就完事了。但这样做也是最昂贵的。读完这一篇源码走查就知道为啥它这么昂贵了。
Rouse
2021/05/28
3.4K0
RecyclerView 刷新列表数据的 notifyDataSetChanged() 为什么是昂贵的?
​借助云开发数据库实现小程序列表上拉刷新功能丨云开发101
上一期101专栏中,我们介绍了如何借助云开发数据库实现小程序的列表触底自动加载功能,相对应的,小程序列表上拉刷新又该如何实现呢?本期专栏就来为大家解答。
腾讯云开发TCB
2019/10/08
6040
微信小程序----列表下拉刷新上拉加载(MUI下拉刷新和上拉加载更多)
效果图 原理 利用微信小程序的onPullDownRefresh函数(下拉刷新监听函数)和onReachBottom函数(上拉加载监听函数)监听页面的下拉和上拉动态,从而对页面数据进行修改! 页
Rattenking
2021/02/01
1.9K0
微信小程序----列表下拉刷新上拉加载(MUI下拉刷新和上拉加载更多)
MariaDB数据库刷新权限表命令
当授权或者修改用户权限时,往往不会马上生效的这是因为数据库没有马上去更新权限相关的表,而是在内存中所以一般都会使用更新权限表,来实现马上更新
用户9006224
2022/12/21
1K0
Java常用数据库列表
MySQL是一种开源的关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,现在由Oracle公司负责维护和支持。MySQL是最流行的数据库之一,被广泛用于各种应用程序和网站开发。 MySQL具有以下特点:
ha_lydms
2023/08/10
5520
Java常用数据库列表
JS/JQuery页面刷新、局部刷新
//div的局部刷新 $(".dl").load(location.href+" .dl"); //全页面的刷新方法 window.location.reload()刷新当前页面. parent.location.reload()刷新父亲对象(用于框架) opener.location.reload()刷新父窗口对象(用于单开窗口) top.location.reload()刷新最顶端对象(用于多开窗口)
小语雀网
2022/05/06
5.8K0
php案例之数据库选择列表
作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主 文章目录 cyg.php check.php 效果: ---- cyg.php <style> body{ background:#ccc; }</style> <b>数据库选择列表<b><br> <form action="check.php" method="POST">//提交到check.php <select name="database" size="10"> <option value="0"
贵哥的编程之路
2022/09/23
6260
php案例之数据库选择列表
数据库Mongodb-用户权限列表
Mongodb用户权限列表 read 允许用户读取指定数据库 readWrite 允许用户读写指定数据库 dbAdmin 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile userAdmin 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 clusterAdmin 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限 readAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读权限 r
cwl_java
2021/08/30
7520
EasyDSS前端界面在页面缩小时内置列表仍需手动刷新的优化
RTMP协议的视频平台EasyDSS除了直播外,还支持点播,转码、上传一体化设计,使音视频资源转码后可立即面向互联网进行发布,在线上教育领域已经能够成熟落地。在开发以及功能的更新过程中,EasyDSS内还运用了很多其他层面的开发技巧,我们也会不定期在博客更新,欢迎大家了解测试。
TSINGSEE青犀视频
2021/09/07
4090
Power BI 异步刷新-查询刷新历史与手动停止刷新
有朋友在评论区提出,如果是手动刷新或者计划刷新,是否知道了requestid就同样可以手动停止呢?
陈学谦
2022/04/08
4.6K0
Power BI 异步刷新-查询刷新历史与手动停止刷新
刷新.NET
.NET Core 发布的那一天起,它在完成自我刷新的过程,一切为了适应未来,云原生。不仅仅跨平台那么简单。
李明成
2020/02/12
6210
UI 刷新
与屏幕刷新相关的有很多,比如刷新流程,屏幕缓存,周期刷新,vsync信号,SurfaceFlinger。
Yif
2020/04/25
2.1K0
5.5 PowerBI技巧-定时刷新与增量刷新
加入 PowerBI自己学 知识星球 可以:下载源文件,边学边练;遇到问题,提问交流,有问必答。
PowerBI自己学_轻松
2025/02/26
1690
5.5 PowerBI技巧-定时刷新与增量刷新
下拉刷新
getMeasuredHeight():获取测量完的高度,只要在onMeasure方法执行完,就可以用
六月的雨
2022/01/17
2.2K0
金蝶KIS&K3助记码SQL数据库批量刷新
金蝶KIS&K3助记码SQL数据库批量刷新 用的次数不多,就没有写入存储过程或者触发里面了,可以自行实现。 第一步选择对应账套的数据库,执行下面的命令,这个是一个函数。 go if exists (select * from sysobjects where name='fun_getPY' and xtype='Fn') begin drop function fun_getPY end go create function fun_getPY(@str nvarchar(4000)) re
landv
2018/06/26
7660
uni-app下拉刷新加载刷新数据
onPullDownRefresh 监听该页面用户下拉刷新事件 需要在 pages.json 里 开启 enablePullDownRefresh
达达前端
2019/10/14
7.4K0

相似问题

每晚刷新postgres数据库

20

在数据库刷新期间保留现有登录

10

SSMS数据库节点刷新导致恢复失败

10

如何在刷新数据库后保存并还原权限

10

通过每日数据库刷新撤销Server登录访问

20
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文