如题,在做界面的时候,把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在文字的下方。