Java关于JButton上加上图片把文字覆盖的问题

如题,在做界面的时候,把JButton上set了一个icon,就把原来的文字覆盖了,set background也是这样,怎么解决呢?求详细介绍,楼主Java小白一只

使用JButton的public void setHorizontalTextPosition(int textPosition)与

                                         public void setVerticalTextPosition(int textPosition)

例:JButton的图标在文本的上方:

JButton wbn1=new JButton();
wbn1.setVerticalTextPosition(SwingConstants.BOTTOM);//
wbn1.setHorizontalTextPosition(SwingConstants.CENTER);//

wbn1.setIcon(new ImageIcon("bin/filechooser/image/rec.gif"));
wbn1.setText("我的文档");

以上两函数的不同组合会得到不同的效果.

 public class GameFrame extends JFrame{
    public void launchFrame(){
        JButton jbtv=getJButtonV("e:\\1.png","aav");
        JButton jbtH=getJButtonH("e:\\1.png","aah");

        this.setSize(500, 500);
        this.getContentPane().setLayout(new GridLayout(9,9,5,5));
        this.getContentPane().add(jbtv);
        this.getContentPane().add(jbtH);
        this.setLocation(200, 100);
        this.setResizable(false);
        this.setVisible(true);
    }
    private JButton getJButtonV(String img, String text) {
            ImageIcon ico = new ImageIcon(img); // 图片 
            JButton button = new JButton(text, ico);  
            button.setIconTextGap(2);  
            button.setHorizontalTextPosition(JButton.CENTER); 
            button.setVerticalTextPosition(JButton.BOTTOM);  
            return button;        
    }
    private JButton getJButtonH(String img, String text) {
        ImageIcon ico = new ImageIcon(img); // 图片 
        JButton button = new JButton(text, ico);  
        button.setIconTextGap(2);  
        button.setHorizontalTextPosition(JButton.RIGHT); 
        button.setVerticalTextPosition(JButton.CENTER);  
        return button;        
}
public static void main(String[] args) {
new GameFrame().launchFrame();
}
}

其实是不存在图片把文字覆盖问题的,只能是你的图片太大了。你可以尝试将设置的图片大小修改一下,比如改成20*20的然后再显示就知道了。

不管你使用哪种策略显示你文本,像上面两位老师说的使用setVerticalTextPosition和setHorizontalTextPosition都只是修改了文字的位置而不是上下层的关系,JButton中默认的文字就是在最上层的,Icon在文字的下方。