确定何时调整画布大小的最佳实践是什么?

鲁夫

好的,所以我从事图形计算器已经有一段时间了,在项目的早期,我实现了一个健壮的窗口侦听器。或者我应该说我构建了一个健壮的窗口侦听器,以在窗口大小更改时处理更新的局部变量。我基本上是这样做的...

/*
canvas, canvasWidth, canvasHeight and refreshGrid() are all local to this class
*/
private class resizeCatch extends Thread{
    private boolean refreshOnStop = false;
    public void run(){
        while(true){
            if(canvasWidth != canvas.getWidth() || canvasHeight != canvas.getHeight()){
                canvasWidth = canvas.getWidth();
                canvasHeight = canvas.getHeight();
                refreshOnStop = true;
            }else if(refreshOnStop && canvasWidth == canvas.getWidth() && canvasHeight == canvas.getHeight()){
                refreshOnStop = false;
                refreshGrid();
            }
            try{Thread.sleep(100);} catch(InterruptedException e) {}
        }
    }
}

ThreadPlotter实例化对象开始执行此操作它所做的只是检查画布的大小并将其与内部变量进行比较。当存在差异时,更新变量,触发更新发生,并且当差异停止时,更新事物的图形方面并继续侦听更改。

我了解这是一种常见的做法。

但是我一直在推广我的Plotter窗户,我已经使其更易于部署,并且不必再管理它自己的窗户了,这就是为什么我觉得是时候将这种讨厌的眼屎踢到路边了!但是,何时刷新图形仍然存在问题...显而易见的答案是当画布更改大小时,但我怎么知道?

理想情况下,埋藏在手册中的某个位置(哦,相信我,我已经在最近的几个月中彻底阅读了手册...),存在某种WindowEventListener或ContainerListener,它具有ResizeEvent或某种我不熟悉的口语术语。但是我什么也找不到!

尽管Thread在我的程序中嵌套了无关紧要的类的想法,臭名昭著的while(true)却在做一些像平常的事情一样肮脏的工作,例如重新调整组件的大小,这使我不满意(不是),但我必须找到某种替代方法。因此,这使我回到了问题的根源。侦听并触发对容器尺寸变化的响应的正确方法是什么?如果没有正确的方法,您将哪些轻便,可管理和合理的实践组合在一起?

现在已经有将近半年的时间了,我已经可以忽略它了。当我接近程序完成时,这是我迫切希望摆脱的事情。请伸出援助之手:)

鲁夫

好吧,MadProgrammer这么大的帽子提示ComponentListener给我指出了在花费一些时间的同时,完美地工作了,正是我想要的。我知道这个问题使很多人感到困惑,所以我将比大多数教程更加冗长,并解释一些集成ComponentListener以便调整窗口大小的简单步骤。

第一步:导入正确的库

import java.awt.event.ComponentListener;
import java.awt.event.ComponentEvent;

第二步:实现类的侦听器

public class Plotter extends GCanvas implements ComponentListener{

第三步:将您Object的内容添加ComponentListener

this.addComponentListener(this);

第四步:覆盖以下方法

public void componentResized(ComponentEvent e){
    //do whatever you want upon size change
}

public void componentHidden(ComponentEvent e){
    //do whatever you want upon visibility change
}

public void componentMoved(ComponentEvent e){
    //do whatever you want upon location change
}

public void componentShown(ComponentEvent e){
    //do whatever you want upon visibility change
}

就是这样。这些工具到位后,您就可以从事业务了!享受 :)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在进入和离开全屏模式时调整画布大小

来自分类Dev

在List <interface>或List <abstractClass>中设置/确定具体类型的最佳实践是什么?

来自分类Dev

为什么不调整画布大小?

来自分类Dev

EaselJS for Ticker的最佳实践是什么

来自分类Dev

Rails前端的最佳实践是什么?

来自分类Dev

创建结构实例的最佳实践是什么?

来自分类Dev

Facade模式的最佳实践是什么?

来自分类Dev

expressjs日志记录的最佳实践是什么?

来自分类Dev

Vuejs中mixin的最佳实践是什么?

来自分类Dev

搜索CSV文件,最佳实践是什么?

来自分类Dev

jsp页面布局的最佳实践是什么?

来自分类Dev

在C ++中定义的最佳实践是什么?

来自分类Dev

Rails前端的最佳实践是什么?

来自分类Dev

Django项目结构的最佳实践是什么?

来自分类Dev

Cassandra的最佳实践活检方法是什么?

来自分类Dev

调用外部 api 的最佳实践是什么?

来自分类Dev

运行集成测试的最佳实践是什么?

来自分类Dev

构建异常消息的最佳实践是什么?

来自分类Dev

Docker 日志记录的最佳实践是什么?

来自分类Dev

使用 CompositeDisposables 的最佳实践是什么

来自分类Dev

为什么这个画布不断增长?(动态调整画布大小)

来自分类Dev

TThread.FinishThreadExecution的用途是什么,何时调用?

来自分类Dev

在基础图像上放置<div>标记并允许调整大小的最佳方法是什么?

来自分类Dev

在加载,调整大小和滚动时-运行单独功能的最佳方法是什么?

来自分类Dev

在基本图像上放置<div>标记并允许调整大小的最佳方法是什么?

来自分类Dev

用recv()确定数据包大小的最佳方法是什么?

来自分类Dev

确定我的Node.js应用程序当前在哪个AWS Beanstalk Environment中运行的最佳实践是什么?

来自分类Dev

Go工作区的最佳最佳实践是什么?

来自分类Dev

当父级更改其宽度/高度时调整画布元素的大小

Related 相关文章

  1. 1

    在进入和离开全屏模式时调整画布大小

  2. 2

    在List <interface>或List <abstractClass>中设置/确定具体类型的最佳实践是什么?

  3. 3

    为什么不调整画布大小?

  4. 4

    EaselJS for Ticker的最佳实践是什么

  5. 5

    Rails前端的最佳实践是什么?

  6. 6

    创建结构实例的最佳实践是什么?

  7. 7

    Facade模式的最佳实践是什么?

  8. 8

    expressjs日志记录的最佳实践是什么?

  9. 9

    Vuejs中mixin的最佳实践是什么?

  10. 10

    搜索CSV文件,最佳实践是什么?

  11. 11

    jsp页面布局的最佳实践是什么?

  12. 12

    在C ++中定义的最佳实践是什么?

  13. 13

    Rails前端的最佳实践是什么?

  14. 14

    Django项目结构的最佳实践是什么?

  15. 15

    Cassandra的最佳实践活检方法是什么?

  16. 16

    调用外部 api 的最佳实践是什么?

  17. 17

    运行集成测试的最佳实践是什么?

  18. 18

    构建异常消息的最佳实践是什么?

  19. 19

    Docker 日志记录的最佳实践是什么?

  20. 20

    使用 CompositeDisposables 的最佳实践是什么

  21. 21

    为什么这个画布不断增长?(动态调整画布大小)

  22. 22

    TThread.FinishThreadExecution的用途是什么,何时调用?

  23. 23

    在基础图像上放置<div>标记并允许调整大小的最佳方法是什么?

  24. 24

    在加载,调整大小和滚动时-运行单独功能的最佳方法是什么?

  25. 25

    在基本图像上放置<div>标记并允许调整大小的最佳方法是什么?

  26. 26

    用recv()确定数据包大小的最佳方法是什么?

  27. 27

    确定我的Node.js应用程序当前在哪个AWS Beanstalk Environment中运行的最佳实践是什么?

  28. 28

    Go工作区的最佳最佳实践是什么?

  29. 29

    当父级更改其宽度/高度时调整画布元素的大小

热门标签

归档