gpt4 book ai didi

java - 使用不支持 HTML 格式的不同样式重写 JButton PaintComponent

转载 作者:行者123 更新时间:2023-12-01 14:02:40 25 4
gpt4 key购买 nike

我只是想为JButton设置不同的样式。所以我重写了paintComponent来实现。运行成功,但该按钮不支持 HTML 格式。

你能给我推荐一下吗

paintComponent()
~~~~~~~~~~~~~~~~
this is below my override code:
// prep for painting.
Graphics2D g2D = (Graphics2D)g;
if(buttonStyle != 0 && buttonStyle != IMAGES){
if(g == null)
return;
if(getBackground() == null)
setBackground(acrcolor);
if(getFadedBackgroundColor() == null)
setFadedBackgroundColor(Color.white);

g2D.clearRect(0, 0, getWidth()+getX(), getHeight()+getY());
// end prep for painting.
}
switch (buttonStyle){
case SKINZ:
paintSkinz(g2D);
return;
case IMAGES:
paintImages(g2D);
break;
case ROLLOVER:
System.err.println("Rollover look of FuelButton not yet implemented.");
break;
case JAVA_LIKE:
paintJavaLike(g2D);
return;
case GRADIENCE:
paintGradience(g2D);
case CLASSIC:
case JAVA_DEFAULT:
default:
super.paintComponent(g);
m_originalborder = getBorder();
m_originalfont = getFont();
return;
}
paintText(g2D,0,0,getWidth(),getHeight());


paintJavaLike(g2D):
~~~~~~~~~~~~~~~~~~~~
g2D.setColor(getBackground());
g2D.fill3DRect(0,0,getWidth(),getHeight(),true);
if(getIcon()==null)
paintText(g2D,0,0,getWidth(),getHeight());
else if (getText() == null || getText().length() == 0)
this.paintCenteredIcon(g2D, ((ImageIcon)getIcon()).getImage());
else {
int w = getWidth() - getIconTextGap() - getIcon().getIconWidth() - (borderWidth*2)-4;
int h = getHeight()-(borderWidth*2);
g2D.drawImage(((ImageIcon)getIcon()).getImage(), 2, (getHeight()/2)-(getIcon().getIconHeight()/2), this);
paintText(g2D,2+getIcon().getIconWidth()+this.getIconTextGap(),0,w,h);
}

谢谢帕拉尼萨米

最佳答案

您可以提供自定义 ButtonUI ,并将其用于按钮,而不是重写 paintComponent()。 Swing 使用 TextLayout 来绘制字符串,这可能会变得很复杂。然而,BasicButtonUI有一个 protected paintText() 方法,可以执行您想要的操作(您不一定需要手动调用它。UI 的 paint() 会调用它,除非您重写那个也是)。因此,如果您扩展 BasicButtonUI,您可以简单地让它绘制字符串。

关于java - 使用不支持 HTML 格式的不同样式重写 JButton PaintComponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19223669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com