java在怎样在graphics中添加button_java – 在JButton上绘制图形

我有一种情况,我在GridLayout上有一堆JButton.我需要每个JButton都有:

>背景图像(但保留在需要时保持默认按钮的能力)

>其他类在顶部绘制的自定义图形

我对背景图片没有任何问题,因为我使用的是setIcon(),但是我在后台绘图时遇到了问题.有一次,我能够在按钮顶部绘制,但点击按钮后,图纸消失了.如何使按钮保持此绘图状态?

基本上,我需要一种方法让我的JButton拥有公共方法,允许另一个类在其上绘制任何内容,例如:

public void drawSomething() {

Graphics g = this.getGraphics();

g.drawOval(3,2,2,2);

repaint();

}

要么

public Graphics getGraphics() {

return this.getGraphics();

}

然后另一个类可以做到这一点:

button.getGraphics().drawSomething();

后者更像我正在寻找的东西,但第一个同样有用.

有什么办法可以解决这个问题吗?此外,覆盖父类方法paintComponent()没有帮助,因为我需要每个按钮具有不同的图形.

解决方法:

你可以继承JButton并覆盖paintComponent().

通过为子类提供外部“画家”,您可以处理具有不同图形的每个按钮.或者只为每个不同的图形使用不同的子类.

public class MyButton extends JButton {

private Painter painter;

public void paintComponent(Graphics g) {

super.paintComponent(g);

painter.paint(g);

}

}

public interface Painter {

public void paint(Graphics g);

}

你不能只是在按钮上画画,因为下次重新绘制按钮时画面会丢失.

标签:java,user-interface,swing,graphics,awt

来源: https://codeday.me/bug/20190717/1484685.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值