我创建了自定义按钮。为此我已经重写了paintComponenet方法。如何在此类按钮上设置按钮文本?我尝试使用drawString方法来做到这一点。但我应该给出哪些 x,y 值? (g.drawString("按钮文本",x,y))。如果有人处理过这个问题,请告诉我。
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
DefaultButtonModel bmodel = (DefaultButtonModel) super.getModel();
Image im = (new ImageIcon("image")).getImage();
System.out.println("im is "+im.getSource());
System.out.println("widthis" + im.getWidth(this));
int imageX = (getWidth() - im.getWidth(this)) /2;
int imageY = (getHeight() - im.getHeight(this)) / 2;
if(!super.isEnabled()) {
System.out.println("in disabled");
g.drawImage(disabled, imageX, imageY, this);
g.drawString( super.getText(), super.getX(),(int) (super.getY() / (1.9)));
}
else {
if(bmodel.isPressed()) {
System.out.println("in pressed");
g.drawImage(down, imageX, imageY, this);
} else if(bmodel.isRollover()) {
System.out.println("in roll overed");
g.drawImage(highlight, imageX, imageY, this);
} else if(bmodel.isEnabled()) {
System.out.println("in enabled");
g.drawImage(normal, imageX, imageY, this);
} else {
System.out.println("in else");
g.drawImage(normal, imageX, imageY, this);
}
g.drawString( super.getText(), super.getX(),(int) (super.getY() / (2.5)));
}
}
最佳答案
为什么不在paintComponent方法的第一行调用super(g)
并使用setText
方法来更改按钮上的字符串。
类似这样的事情:
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
// do your customized painting here...
}
关于Java Swing JButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1893155/