小编典典
当我第一次学习Java时,我们不得不制造Yahtzee,我认为创建自定义的Swing组件和容器会很酷,而不仅仅是在一个组件上绘制所有内容JPanel。Swing当然,扩展组件的好处是能够添加对键盘快捷键和其他辅助功能的支持,而仅通过一种paint()方法打印漂亮的图片就无法做到。但是,它可能不是最佳方法,但对您来说可能是一个很好的起点。
编辑8/6-如果从图像中看不到,则每个“模具”都是可以单击的按钮。这会将其移至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的布局,按钮的外观可能会完全不同。
2020-11-25