首先,我是一名 Web 开发人员和一名初级 Java 程序员。
我的老板要我在应用程序中制作这个按钮:
我的自定义按钮类必须扩展 JButton
或 BasicButtonUI
以便可以重用。
我对 Stack Overflow 做了一些研究,但我不明白答案,尤其是我老板的时间限制。
最佳答案
您应该为此创建自己的组件。
在 JPanel 上覆盖 的paintComponent 方法,并在paintComponent 方法中绘制(即填充)一个灰色的圆角矩形2D:
RoundRectangle2D roundedRectangle = new RoundRectangle2D.Float(x, y, w, h, 10, 10);
g.fill(roundedRectangle);
(最后两个值决定曲率。一直玩直到你得到你想要的)
现在移动 x,y 并减小 宽度 和 高度 以便在绘制下一个矩形时,它位于灰色矩形内。将图形颜色设置为蓝色,然后执行以下操作:
RoundRectangle2D roundedRectangle2 = new RoundRectangle2D.Float(x + 5, y + 5, w - 10, h - 10, 10, 10);
g.fill(roundedRectangle2);
您还需要添加文本。添加文本需要 x 和 y 位置。精确的 x 和 y 位置可能很难计算,因此您可能需要使用 FontMetrics 来获取有关字符串矩形形状的更多信息。 Fontmetrics 有像 stringWidth() 和 getHeight() 这样的方法可以帮助你确定你的 x 和 y 应该是什么。
g.drawString("Click Me", x, y);
最后,您需要在面板上有一个鼠标运动监听器。监听器需要找到鼠标何时位于按钮上,然后重绘组件。
您的矩形可以转换到 shape 对象,并且可以计算鼠标是否在该形状中。例如:
shape.contains(x,y)
如果包含,则更改颜色,然后在面板上调用 repaint() 或 updateUI() 。
注意:您的颜色对象应作为类中的类级别字段保留,以便可以通过鼠标悬停进行更改。
希望这可以帮助!