【问题标题】:How do I change the color of a drawn item after pressing a JButton? [duplicate]按下 JButton 后如何更改绘制项目的颜色? [复制]
【发布时间】:2016-05-06 23:15:10
【问题描述】:

所以程序画了一辆汽车,我要做三个按钮,一个用于flash初始化闪烁能力,一个向左,将汽车向左移动一格,向右移动一格,将汽车移动一格向右。我的问题是每次按下按钮时如何让它改变颜色?总而言之,我不知道如何在闪烁开启时每次按下按钮时让一个对象改变它的颜色。我假设我使用paint()

任何帮助将不胜感激。

【问题讨论】:

    标签: java swing awt


    【解决方案1】:

    如果您正在绘制图像,则需要加载不同颜色的不同图像文件,然后改为绘制该图像。您将在当前用于绘制汽车的任何方法中执行此操作。

    如果您正在绘制某种形状或文本,您可以在绘制形状之前对传递给paint()paintComponent() 方法的图形对象调用g.setColor()

    【讨论】:

      【解决方案2】:

      有很多方法可以做到这一点。不过,基本要求是拥有某种Object,您可以告诉它何时应该改变颜色,然后它会采取适当的行动并相应地更新 UI。

      你可以...

      使用一个简单的JPanel作为对象的表示,当你想要它改变颜色时,只需调用它的setBackground颜色方法。

      这假设您想使用LayoutManager 来定位面板。虽然这当然是可行的,但需要对整体设计进行一些思考

      你可以...

      使用JPanel 并覆盖它的paintComponent 方法并在那里绘制颜色变化。在最简单的层面上,这是矫枉过正,但如果你还想画一个“汽车”或“汽车”的图像,那么这变得更有意义,特别是如果你想根据它移动的方向旋转汽车

      更多详情请参阅Painting in AWT and SwingPerforming Custom Painting2D Graphics

      闪烁

      我假设您的意思是您希望对象以某种方式设置动画并“闪烁”开和关。

      这可以通过使用 Swing Timer 轻松实现,它可用于更改简单标志的状态,从而改变组件的呈现方式。

      详情请见How to use Swing Timers

      从中删除的重要概念是创建一个将需求封装在其中的对象,以便您轻松使用,因此,例如,当您启用闪烁时,您所要做的就是调用setFlashing(boolean) 方法和对象负责其余的工作

      【讨论】:

      • 有人愿意强调否决票的原因吗?它以何种方式不回答 OP 的问题?在哪些方面可以改进?
      猜你喜欢
      • 2016-05-08
      • 1970-01-01
      • 1970-01-01
      • 2018-06-10
      • 2014-10-12
      • 2017-11-14
      • 1970-01-01
      • 1970-01-01
      • 2019-09-07
      相关资源
      最近更新 更多