当前位置: 首页 > 知识库问答 >
问题:

使用键在JPanel中移动矩形

澹台浩广
2023-03-14

我有一个名为“DisplayPanel”的类(它扩展了JPanel),我在那里画了一个正方形,它来自一个名为“square”的类(它扩展了JComponent)。如何使用键在JPanel中移动矩形?

正方形类有通常的绘制方法:

public void paintComponent(Graphics g) {
    Dimension dimension = getSize();
    super.paintComponent(g);
    Graphics2D graphics2D = (Graphics2D) g;
    g.setColor(Color.black);
    graphics2D.fill(squarishThing); 
}

“squarishThing”是一个普通矩形:

Rectangle squarishThing = new Rectangle (0, 0, 50, 50);

问题是:与“游戏库”不同,尝试“手动”做这样的事情是相当令人困惑的。我不知道“while循环”去哪里了。我试图在显示面板中放置一个键侦听器,但我在更新矩形时失败了。没有循环,我无法重新绘制矩形,因为方法油漆组件采用了令人不快的论点。OBS:每次我尝试插入一个循环时,软件都会急剧崩溃,所以我放弃了这样做。

根据输入重新绘制对象可以做什么?

共有1个答案

经俊茂
2023-03-14

无法重新绘制矩形,因为paintComponent方法采用了令人不愉快的参数。永远不要调用paintComponent,而是使用repaint()。

使用键绑定只需将“squarishThing”更新为适当的值,然后调用repaint()。

 类似资料:
  • 我正在尝试用Windowbuilder创建一个小程序,它只需在JPanel中绘制一个红色矩形(称为car1),并通过按箭头键来移动它;为了做到这一点,我将一个改变x位置的方法与箭头相关联,并调用Repait方法,但矩形根本不移动——因此,我可能会把KeyEvent和/或Repait搞砸。 每次按正确的箭头键移动并刷新面板时,我应该怎么做才能使矩形移动并刷新面板?

  • 我试图让一些jLabel在按下GridLayout键的JPanel上彼此交换位置。 到目前为止: 1。我只能让他们对鼠标点击做出反应 2。他们只能在其上方和左侧的位置进行切换。 注: 1。如果我设置movePlayer(1),它会工作。并从网格(8,7)切换一个带有玩家图像的JLabel,其中一个JLabel上面有一个地板图像。然而,我的问题是,当我设置movePlayer(2)时,它会给我和索引

  • 问题内容: 我创建了一个JFrame,它的中央有一个矩形,当我按某些键时,该矩形会移动。一切都很好,但当我松开按键时,矩形会继续前进。实际上,如果我多次按一个键,则矩形会加速。这可能是(肯定),因为在按下某个键时,我正在使用计时器来避免令人讨厌的0.5秒输入延迟。 我认为我必须在该方法中添加一些内容,但是我对放置在其中的内容一无所知。有小费吗?谢谢。 PS: 请 不要对我不使用按键绑定大吼大叫。我

  • 我是的新手。我正在努力用触碰让身体移动,一旦触碰被释放,它就必须停止移动!!使用KeyUp和KeyDown可以很好地工作,但我不知道如何使用touch实现。 这是我的密码。我是作为一门独立的课写的。下面是课程: 这是我的密码。我试着触地得分。我试图通过设定一定的速度来移动身体,但没有发生预期的结果。我不能用触摸来移动这个物体(多边形)。请帮忙。提前谢谢

  • 问题内容: 我有一个应用程序,该应用程序在视图的下半部分具有文本字段。这意味着当我输入文本字段时,键盘将覆盖文本字段。 如何在键入时向上移动视图,以便可以看到正在键入的内容,然后在键盘消失时将其向下移动到原始位置? 我到处都看过,但是所有解决方案似乎都在Obj-C中,我还不能完全转换。 任何帮助将不胜感激。 问题答案: 这是一个解决方案,无需处理从一个textField到另一个的切换: 要解决此问

  • 问题内容: 我正在尝试通过keyEvent向左移动一个圆圈。到目前为止,圆已在窗口上绘制,但不会向左移动!我觉得问题是我在容器中添加了Window()构造函数。在控制台上没有输出告诉我它正在工作。因此,我认为它甚至不会到达KeyEvent类。这是我的代码: 问题答案: 实际上,这是您要添加到的内容,但重点是,因此,当您键入内容时,该内容将转到与类无关的内容。因此,为了克服它,你只需要调用的类的对象