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