JAVA GUI 设置背景图片的一个问题

我是想做一个程序的简单的欢迎窗口,但是在背景图片这里遇到了点麻烦。源代码在这里:http://pan.baidu.com/share/link?shareid=15849... 我是想做一个程序的简单的欢迎窗口,但是在背景图片这里遇到了点麻烦。源代码在这里:http://pan.baidu.com/share/link?shareid=1584948368&uk=2785344091

我想让他们都到下图这个位置。但是运行后,BUTTON都没有显示出来需要鼠标滑动后才会显示。可能是背景图片设置的问题。怎么破,希望大家给出详细回答(我的源代码的修改或详细说明)。满意可以追加悬赏分。谢谢大家了。

显示效果如图
展开
 我来答
lufei_200x
推荐于2016-07-15 · TA获得超过2733个赞
知道小有建树答主
回答量:280
采纳率:0%
帮助的人:310万
展开全部
你的程序本身运行就有问题,最后一句报错啊。
还有就是去掉你的图片,你的按钮根本显示不出来。

给你看个,运行一下。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class temp extends JFrame {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(1024, 725);
frame.setLocation(173, 0);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);

frame.setTitle("图书馆藏书查询(2013年版)");
frame.setResizable(false);
// JPanel panel = new JPanel();
JPanel panel = new ImagePanel();
frame.setContentPane(panel);
ImageIcon ii = new ImageIcon("tushuguan.jpg");
JLabel lab1 = new JLabel(ii);
// 添加图片到frame第二层,将背景图标签添加到jframe的LayeredPane面板里??
frame.getLayeredPane().add(lab1, new Integer(Integer.MIN_VALUE));
lab1.setBounds(0, -2, ii.getIconWidth(), ii.getIconHeight());
JPanel jp = (JPanel) frame.getContentPane();
jp.setOpaque(false);
panel.setOpaque(false);
panel.setLayout(null);
JLabel textJLabel = new JLabel();
textJLabel.setText("图书馆藏书查询(2013年版)");
textJLabel.setLocation(150, 50);
textJLabel.setSize(750, 88);
textJLabel.setFont(new Font("SanSerif", Font.PLAIN, 36));
textJLabel.setHorizontalAlignment(JLabel.CENTER);
panel.add(textJLabel);
JButton function1JButton = new JButton();
function1JButton.setText("馆藏书籍结构");
function1JButton.setBounds(150, 200, 200, 50);
panel.add(function1JButton);
JButton function2JButton = new JButton();
function2JButton.setText("书籍借阅优化建议");
function2JButton.setBounds(150, 325, 200, 50);
panel.add(function2JButton);
JButton function3JButton = new JButton();
function3JButton.setText("书籍分布规律");
function3JButton.setBounds(150, 450, 200, 50);
panel.add(function3JButton);
JButton function4JButton = new JButton();
function4JButton.setText("关于我们");
function4JButton.setBounds(150, 575, 200, 50);
panel.add(function4JButton);
frame.setVisible(true);
}

}

class ImagePanel extends JPanel {

protected void paintComponent(Graphics g) {
super.paintComponent(g);
ImageIcon icon = new ImageIcon("tushuguan.jpg");
g.drawImage(icon.getImage(), 0, 0, null);

}

}
追问
可以运行,能说下原理么?
最后一句报错?怎么可能呢?是哪句?我这编译还是能运行啊,除了我说的哪些问题?
还有就是去掉你的图片,你的按钮根本显示不出来。这是什么意思.
追答
哦,报的错是参数不合法异常,就是你原先最后add panel的那句,我去掉了就不报错了。
还有就是frame.setVisible方法我放到了最后,因为你开始放到前面,我这里运行不出来按钮,
放到最后一句运行就能看到了。
另外,避免背景图片遮挡按钮组件的方法,通常就是:
重写Panel类的paintComponent方法,在super.paintComponent方法后,
加上自己要画的东西,比如说你的背景图片,这样就能避免每次你用鼠标
触发按钮显示的bug。
这个方法网上很多有经验的程序员,遇到这个问题基本这么做。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sirouszlh
2013-07-08 · TA获得超过1651个赞
知道小有建树答主
回答量:1038
采纳率:100%
帮助的人:643万
展开全部
应该是界面没刷新的问题吧
追问
什么意思详细些?界面怎么刷新?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式