rt  
jpanel中画了多个按钮 设置了背景之后
只能显示一个按钮 其他的必须要鼠标移动过去之后才可以显示
 调用repaint之后解决问题但是会闪屏
若该用paintComponents来画不知道如何调用。。
本人大三学生刚接触java  
package day4;import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.peer.LightweightPeer;import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class StartScreen extends JFrame implements ActionListener {
Image pImg;
int x=400,y=600;
JButton jb1,jb2,yxj1,yxj2,yxj3;
public StartScreen(){
pImg=new ImageIcon("Image/bk201.jpg").getImage();
this.setBounds(100, 100, 300, 400);
this.setTitle("Login");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
JPanel ssj=new JPanel();
ssj.setBounds(0, 0, 300, 400);
ssj.setLayout(null);
//jb1=new JButton("开始游戏");
jb2=new JButton("退出游戏");
 yxj1=new JButton(new ImageIcon("Image/yxj1.png"));
yxj2=new JButton(new ImageIcon("Image/yxj2.png"));
yxj3=new JButton(new ImageIcon("Image/yxj3.png"));
jb2.setBounds(180,320,100,30);
yxj1.setBounds(50, 220, 50, 50);
yxj2.setBounds(120,220,50,50);
yxj3.setBounds(190,220,50,50);
ssj.add(yxj1);ssj.add(yxj2);ssj.add(yxj3);
ssj.add(jb2);
    this.add(ssj);
    jb2.addActionListener(this);
  
    yxj1.addActionListener(this);
    yxj2.addActionListener(this);
    yxj3.addActionListener(this);
}
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
g.drawImage(pImg, 0,-100, null);
repaint();
}
public static void main(String[] args) {
new StartScreen();
//w.setVisible(true);
} public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==yxj1)
{
PJframe pjf=new PJframe();
pjf.setVisible(true);
this.setVisible(false);
this.dispose();
}
if(e.getSource()==yxj2)
{
PJframe1 pjf1=new PJframe1();
pjf1.setVisible(true);
this.setVisible(false);
this.dispose();
}
if(e.getSource()==yxj3)
{
PJframe2 pjf2=new PJframe2();
pjf2.setVisible(true);
this.setVisible(false);
this.dispose();
}
if(e.getSource()==jb2)
{
System.exit(0);
}
}
public void start() {
new Thread() {
public void run() {
while (true) {

try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}.start();
}
}