当我第一次学习Java时,我们必须使Yahtzee,我认为创建自定义的Swing组件和容器,而不是只是绘制一切在一个JPanel是很酷。扩展Swing组件的好处当然是能够添加对键盘快捷方式和其他辅助功能的支持,这是您无法通过使用paint()方法打印漂亮的图片。这可能不是最好的方法,但它可能是一个很好的起点。
编辑8/6 – 如果从图像不是很明显,每个Die是一个按钮,你可以单击。这将把它移动到下面的DiceContainer。看看源代码,你可以看到每个Die按钮是动态绘制的,基于它的值。
以下是基本步骤:
>创建一个扩展JComponent的类
>在构造函数中调用父构造函数super()
>确保你的类实现了MouseListener
>把它放在构造函数中:
enableInputMethods(true);
addMouseListener(this);
>覆盖这些方法:
public Dimension getPreferredSize()
public Dimension getMinimumSize()
public Dimension getMaximumSize()
>覆盖此方法:
public void paintComponent(Graphics g)
绘制按钮时必须处理的空间量由getPreferredSize()定义,假设getMinimumSize()和getMaximumSize()返回相同的值。我没有做过太多的实验,但是,根据你使用的GUI你的按钮可以看起来完全不同的布局。
最后,source code.如果我错过了任何东西。