问题标签 [repaint]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
11034 浏览

java - 在 JPanel 上重新绘制/刷新 JLabels

我无法让我的 JLabels 在 2D 数组中在运行时更新。

我正在开发的程序是 Connect Four 的一个变体。我创建了一个 JLabels 的 2D 数组,它们都默认为一个包含空白插槽图像的 ImageIcon。玩家 1 和 2 选择他们的颜色,在轮到玩家时,他可以单击将一块棋子放入一列(重力会导致棋子落到底部或直到它落在另一块棋子的顶部)。

我很肯定我的 addToColumn 方法运行良好。我唯一的问题是我似乎无法更新任何 JLabels。这是我正在研究的方法:

p1、p2 和 current 是 Player 对象。grid[][] 是一个二维整数数组,设置为 0、1 或 2,以便更轻松地跟踪谁拥有哪些图块。tiles[][] 是我的二维 JLabels 数组。

现在最后两行更改了tiles [] []中的JLabel,显然我不需要两者,不确定哪种方式更好......这只是我尝试过的一些方法,但无济于事。(我的 getColor() 方法返回一个 Color,findColorIcon(Color c) 返回对应的 JLabel 与该颜色的瓷砖)。

是的,我也在我的 paintComponent 方法中添加了:

我已经坚持了一段时间了,我觉得我错过了一些明显的东西。有什么建议么?

0 投票
2 回答
255 浏览

java - 在游戏中绘制玩家和风景?

我只是在玩一个小游戏来获得更多的java经验。包含所有视觉内容的面板有一个二维数组作为基于瓷砖的景观的网格,我喜欢草、树和水。为了在正确的图块上正确绘制正确的图片,需要大量的 if 语句等。它看起来不太好,所以我将水瓦的所有 if 语句(确定它是北海岸还是海洋等)移到他们自己的方法中,但我注意到它在我尝试时减慢了很多移动我的角色。我意识到每次移动时都重新绘制背景是愚蠢的,因为它几乎保持不变。那么,我怎样才能只绘制背景并保留它,但仍然在角色以合理的速度在面板上移动时为角色重新绘制精灵?

0 投票
3 回答
993 浏览

java - repaint() 擦除先前绘制的点

我正在尝试绘制用户在 JPanel 上单击的点。能够识别坐标,但是在repaint()调用之前的点时会被覆盖。

请告诉我如何修改程序,以便在单击新点时它与以前的点一起显示。我需要知道是否有任何简单的方法可以做到这一点,而不是存储单击的点值并在每次单击新点时重新绘制所有这些值。如果您可以提供代码片段,那将是可观的。

0 投票
2 回答
1538 浏览

java - 在 Java、AWT 中,repaint-method 似乎被忽略了,取而代之的是 start-method

我正在构建一个棋盘游戏小程序,处理用户输入大致如下所示:

在人工输入之后,计算机选择一个移动并像这个方法一样调用 repaint() 和 start()。
但是屏幕似乎只有在计算机移动之后才会更新,所以在调用 start() 之后。这怎么会发生,因为 repaint() 在 start() 之前被调用?

我怀疑这可能是因为 repaint() 启动了一个新线程(是吗?),但它为什么要等待 start()?

当然,如果需要,我可以提供更多代码。

0 投票
5 回答
1308 浏览

java - java中的绘图问题

我是java新手,我需要实现一个绘画应用程序,我有点卡在开始,我设法画线到我添加到JFrame的JPanel,但每条画线都会重置整个绘图,并且在绘图区域中仅保留最后绘制的线。我希望我让自己理解,这里是他的代码:

0 投票
2 回答
1306 浏览

java - 在任何其他对象/绘图前绘制一些东西

我正在制作一个小游戏,我需要更多帮助。我想这样做,如果 Player1 和 Player2 完成,一个白色的屏幕会在任何对象或绘图前面的整个屏幕上弹出。我现在使用这个作为代码:

我的控制台说它们都已完成,但不会绘制白屏。我什么也没看到,我怀疑它是在背景和物体后面画的。我将实际上是一个矩形的白屏放置在 (0,0) (分别为 x 和 y 坐标),我的窗口为 800x600(宽 x 高)。

如何在另一个对象前面绘制矩形,或者有更好的方法吗?白屏的目的是充当“残局屏幕”,您可以在其中选择是否要再次执行此操作,或者进入下一个级别。执行此代码时没有错误。

0 投票
1 回答
543 浏览

java - 其他面板顶部的 Jpanels 在对象交互时消失。- java摇摆界面

好的,我希望尽我所能解释这一点。

问题是我有一个JPanel带有棋盘游戏图像的外部,以及一个JPanel 带有位置菜单、下一回合、掷骰子按钮等的内部。

我让我的板标记从板的一侧移动到另一侧,但是板的内部部分在这种情况下消失了。

我尝试revalidate(); repaint();为外部和内部面板、电路板图像、按钮等做所有事情,但我仍然面临这个问题。

希望有人可以提供帮助。谢谢。

0 投票
1 回答
2249 浏览

java - 使用 mvc 设计模式调用 repaint() 和 paintComponent() 方法的问题

我正在创建一个小游戏,您单击按钮(上、下、左、右)来控制一只猫(由一个矩形表示)追逐一只鼠标(由另一个矩形表示)。蹩脚的我知道......无论如何,我正在使用 mvc 设计模式,并且我在从面板上要“绘制”两个矩形的控制器中的按钮侦听器中调用 repaint 方法时遇到问题。他们第一次成功地绘画,但没有任何进一步的时间。

我已经以两种方式实现了 paintComponent() 方法,但都没有工作

  1. 创建一个扩展 JPanel 并执行paintComponent 业务的单独类,在视图中创建该类的新对象并使用它来绘制矩形。
  2. 创建一个 JPanel 并在新 JPanel 对象的括号中写入 paintComponent 内容。

我已经在控制器中实现了代码以两种方式重新绘制,但都没有工作

  1. 从返回 jpanel 的视图中调用一个方法,该 jpanel 使用 paintComponent 方法并在其上调用 repaint。
  2. 在控制器中创建一个 jpanel 并将面板从视图分配给它,然后在其上调用 repaint。

视图和控制器的代码(很长,对不起!)在下面,它还包括注释掉的东西,我无法通过两种方法来解决前面提到的问题......

/* * gameView.java */

打包游戏;

导入 java.awt。; 导入 java.awt.event。; 导入 javax.swing.*;

公共类 gameView 扩展 JFrame{

}

控制器

/* * gameController.java */ 打包游戏;

导入 java.awt.event。; 导入 javax.swing。;

公共类游戏控制器{

}

0 投票
2 回答
153 浏览

c# - 没有用户登录时重绘窗口

当没有活动用户使用 c sharp 登录到 Windows 机器时,是否可以重新绘制窗口?该窗口是否可用于屏幕捕获程序?或者根本不可能,用户必须登录到机器。

我利用以下内容:

谢谢大家的帮助

0 投票
1 回答
2168 浏览

java - 如何从小程序中的另一个方法调用重绘?

我正在用java编写一个游戏(一个小程序),我有两个线程正在运行。一个线程在主类中运行,另一个是一个单独的类,绘制到一个公共变量类中的一个图形变量供所有其他类读取。(主类读取图形变量并可以将其绘制(作为图像)。)

我希望能够从其他类调用主小程序的 repaint() 方法,但我不知道该怎么做,因为调用“Main_applet_class”.repaint() 方法会导致“你可以't-call-this-method-from-a-static-context" 错误。帮助!