首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Swing JButton

Java Swing JButton
EN

Stack Overflow用户
提问于 2009-12-12 19:47:40
回答 2查看 1K关注 0票数 0

我已经创建了自定义按钮。为此,我重写了paintComponenet方法。如何在这样的按钮上设置按钮文本?我尝试过使用drawString方法。但是我应该给出哪些x,y值呢?(g.drawString(“按钮文本”,x,y))。如果有人处理过这个问题,请告诉我。

代码语言:javascript
复制
@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)));
    }



}
EN

回答 2

Stack Overflow用户

发布于 2009-12-12 19:50:19

为什么不在paintComponent方法的第一行调用super(g),并使用setText方法更改按钮上的字符串。

如下所示:

代码语言:javascript
复制
protected void paintComponent(Graphics g)
{
   super.paintComponent(g);
   // do your customized painting here...
}
票数 1
EN

Stack Overflow用户

发布于 2009-12-12 23:43:19

你想做什么,你从来没有说过实际的需求吗?看起来您正在尝试在图像顶部绘制文本。如果是这样,则不需要自定义绘制,只需使用:

代码语言:javascript
复制
button.setHorizontalTextPosition(JButton.CENTER);
button.setVerticalTextPosition(JButton.CENTER);

您可以根据需要设置鼠标翻转和按下图标。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1893155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档