当前位置:编程学习 > JAVA >>

求高手帮忙看下,背景图片覆盖按钮的问题

public class SGL {
public static void main(String[] args) {
new SGL();
}

JLabel lable;// 定义静态文本
JTextArea jta = new JTextArea(10, 44);
// 设置按钮上显示的图标
// 按钮图标
ImageIcon baiduimage = new ImageIcon("F:\\MyEclipse\\编程思想\\BD.jpg"),
googleimage = new ImageIcon("F:\\MyEclipse\\编程思想\\GG.jpg"),
taobaoimage = new ImageIcon("F:\\MyEclipse\\编程思想\\TB.jpg"),
csdnimage = new ImageIcon("F:\\MyEclipse\\编程思想\\BD.jpg"),
yjimage = new ImageIcon("F:\\MyEclipse\\编程思想\\YJ.jpg");
// 定义按钮
JButton baiduButton;
JButton googleButton;
JButton taobaoButton;
JButton csdnButton;
JButton yjButton;
JButton qqkjButton;
JButton wkButton;
JButton qqyyButton;
JButton yyButton;
JButton qqxfButton;
JButton qqButton;
JButton nkButton;
JButton eclButton;
JButton dngjButton;
JButton rjglButton;
JButton xlkkButton;
JButton dztButton;
JButton kgButton;
JButton ydButton;
JButton gsButton;
JButton bangzhuButton;
JButton tuichuButton;
JFrame frame;

public SGL() {
// 定义静态文本的内容
JLabel lr = new JLabel(
"请在文本框内输入您要搜索的内容:                                                                                               ");
JLabel hp = new JLabel(
"帮助选择区:                                                                                                                                      ");
JLabel wz = new JLabel(
"常用网址区:                                                                                                                                      ");
JLabel ss = new JLabel(
"搜索选择区:                                                                                                                                      ");
JLabel rj = new JLabel(
"常用软件集成区:                                                                                                                              ");
JLabel wl = new JLabel(
"欢迎来到常用软件集成中心!                                                                                                           ");
JLabel ts = new JLabel(
"如果您需要多次操作,请注意清空输入框!                                                                                 ");

// 界面容器命名
frame = new JFrame("常用软件集成中心");
JPanel imagePanel;
// 设定窗口上显示的图标
Toolkit tk = Toolkit.getDefaultToolkit();
Image im = tk.getImage("F:\\MyEclipse\\编程思想\\MR.jpg");
frame.setIconImage(im);
// 按钮命名,添加背景色
baiduButton = new JButton("百度搜索", baiduimage);
baiduButton.setBackground(Color.pink);

googleButton = new JButton("谷歌搜索", googleimage);
googleButton.setBackground(Color.pink);

taobaoButton = new JButton("淘宝搜索", taobaoimage);
taobaoButton.setBackground(Color.pink);

csdnButton = new JButton("CSDN论坛",yjimage);

yjButton = new JButton("远景论坛");

wkButton = new JButton("百度文库");

qqkjButton = new JButton("Q  Q空间");

qqyyButton = new JButton("Q   Q音乐");

qqxfButton = new JButton("Q   Q旋风");

qqButton = new JButton("腾讯Q  Q");

yyButton = new JButton("Y   Y语音");

nkButton = new JButton("NetKeeper");

eclButton = new JButton("MyEclipse");

dngjButton = new JButton("电脑管家");

rjglButton = new JButton("软件管理");

xlkkButton = new JButton("迅雷看看");

dztButton = new JButton("金山打字");

kgButton = new JButton("酷狗音乐");

ydButton = new JButton("115网盘");

gsButton = new JButton("格式工厂");

bangzhuButton = new JButton("帮助文档");

tuichuButton = new JButton("退出程序");

// 布局用户界面
// 这是背景图片
ImageIcon img = new ImageIcon("F:\\MyEclipse\\编程思想\\BJ.jpg");
// 将背景图放在标签里
JLabel imgLabel = new JLabel(img);
// 设置背景标签的位置
imgLabel.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());
// 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明
imagePanel = (JPanel) frame.getContentPane();
imagePanel.setOpaque(false);
imagePanel.setLayout(new BorderLayout());
// 文本框
imagePanel.add(lr);
imagePanel.add(jta);

// 搜索选择区域
imagePanel.add(ss);
imagePanel.add(baiduButton);
imagePanel.add(googleButton);
imagePanel.add(taobaoButton);
// 常访问的网址区
imagePanel.add(wz);
imagePanel.add(csdnButton);
imagePanel.add(yjButton);
imagePanel.add(qqkjButton);
imagePanel.add(wkButton);
// 常用软件集成区域
imagePanel.add(rj);
imagePanel.add(qqyyButton);
imagePanel.add(yyButton);
imagePanel.add(qqxfButton);
imagePanel.add(qqButton);
imagePanel.add(nkButton);
imagePanel.add(eclButton);
imagePanel.add(dngjButton);
imagePanel.add(rjglButton);
imagePanel.add(xlkkButton);
imagePanel.add(dztButton);
imagePanel.add( kgButton);
imagePanel.add(ydButton);
imagePanel.add(gsButton);
// 帮助
imagePanel.add(hp);
imagePanel.add(bangzhuButton);
imagePanel.add(tuichuButton);
// 底部软件提示信息
imagePanel.add(wl);
imagePanel.add(ts);

frame.getLayeredPane().setLayout(null);
// 把背景图片添加到分层窗格的最底层作为背景
frame.getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 界面大小
frame.setSize(img.getIconWidth(), img.getIconHeight());
// 设置窗口大小不可改变
frame.setResizable(false);
// 窗口周期和窗口事件监控
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent ev) {
frame.dispose();
}
});
frame.setVisible(true); --------------------编程问答-------------------- 貌似背景图片不能这样添加吧。
应该是重写paint(g)方法
当然我不确定,因为我没有用过你那样的方式成功过。
但尝试过,分层结构我是在了paint方法中实现的.
http://bbs.csdn.net/topics/390280211
连接时这个论坛一个人发的技术贴,介绍背景绘图的。
另外补一句,如果只是单纯的想按钮显示在背景之上的话不用那么麻烦的,add组件的时候先添加buttion,后添加背景JLabel就可以了。
引用:
其实java想把界面做漂亮点的话,只要把背景做好就行了,在jdk1.6以后可以继承JFrame,或JWindow后如下设置即可 
setUndecorated(true);//不要标题栏的修饰,主要防止一下代码抛异常,
AWTUtilities.setWindowOpaque(this, false);   //关键点,设置窗体的透明,这种透明不会影响到内部组件,方便绘制背景。
然后再自己重写一下JPanel的  paintComponent(Graphics g)方法,用该方法绘制背景,最好不要用paint方法,因为该方易做图覆盖内部组件,遮住内部组件很蛋疼的哟。将自己写的JPanel通过setContentPane方法加入到JFrame或JWindow的contentPane中,再在contentPane里添加自己的组件即可。
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,