下面贴上全部的代码:package ui.mainUi;import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import ui.mainUi.mainPanel;
import javax.swing.*;import com.sun.awt.AWTUtilities;public class mainFrame extends JFrame {
public static int WIDETH = 500;
public static int  HEIGHT= 800;
private static final Image image = Toolkit.getDefaultToolkit().getImage(
"E:\\yangwei's home\\java\\Application\\Application\\player\\img\\skin6.gif"); //播放器主体结构
public mainFrame() {
setTitle("MyPlayer");
setSize(WIDETH,HEIGHT);
doLay();
mainPanel controlPanel=new mainPanel();
setLayout(new BorderLayout());
    add(controlPanel,BorderLayout.CENTER);
setVisible(true);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} //加载播放器的背景
private static final JComponent canvas = new JComponent() {
protected void paintComponent(Graphics g) {         
super.paintComponent(g);
Graphics gBackground = g.create();
gBackground.drawImage(image, 0, 0, getWidth(), getHeight(), this);
gBackground.dispose();
}
};
    //加载背景
private void doLay() {
Container container = getContentPane();
container.add(canvas);
// pack();
setVisible(true);
}
}package ui.mainUi;import javax.swing.JButton;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.*;public class mainPanel extends JPanel
{

private JMenuBar mainMenu;
private mainPanel lyricsPanel;
private JButton pauseButton;
private JButton playerButton;
private JButton nextone;
private JButton previousone;

mainPanel()
{
nextone = new Button(
"E:\\yangwei's home\\java\\Application\\Application\\player\\img\\fastForward.png");
nextone.setBounds(new  Rectangle(165,55,40,30));
playerButton=new Button("E:\\yangwei's home\\java\\Application\\Application\\player\\img\\play.png");
playerButton.setBounds(210,55,40,30);
previousone = new Button("E:\\yangwei's home\\java\\Application\\Application\\player\\img\\rewind.png");
previousone.setBounds(255,55,40,30);
setLayout(null);
add(previousone,null);
add(playerButton,null);
add(nextone,null);
JSlider VolumeControl=new JSlider();
VolumeControl.setBounds(275, 55, 40, 30);
VolumeControl.setPaintLabels(true);
add(VolumeControl);
        setVisible(true);
}

}麻烦帮忙看下

解决方案 »

  1.   

    你那个setBounds()里的参数设置不合理,导致button互相挡住了而且,
    private JButton previousone;
    previousone = new Button("E:\\yangwei's home\\java\\Application\\Application\\player\\img\\rewind.png");这个不知道是怎么编译过去的
      

  2.   

    你自己做的component挡住你的按钮了。将背景图片相关的代码从mainFrame中删掉,改在MainPanel中做就行了,如下:class MainPanel extends JPanel { private JMenuBar mainMenu;
    private MainPanel lyricsPanel;
    private JButton pauseButton;
    private JButton playerButton;
    private JButton nextone;
    private JButton previousone; private static final Image image = Toolkit.getDefaultToolkit().getImage(
    "images/Cat.gif"); // 加载播放器的背景
    protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics gBackground = g.create();
    gBackground.drawImage(image, 0, 0, getWidth(), getHeight(), this);
    gBackground.dispose();
    } MainPanel() {
    nextone = new JButton(
    "E:\\yangwei's home\\java\\Application\\Application\\player\\img\\fastForward.png");
    nextone.setBounds(new Rectangle(165, 55, 40, 30));
    playerButton = new JButton(
    "E:\\yangwei's home\\java\\Application\\Application\\player\\img\\play.png");
    playerButton.setBounds(210, 55, 40, 30);
    previousone = new JButton(
    "E:\\yangwei's home\\java\\Application\\Application\\player\\img\\rewind.png");
    previousone.setBounds(255, 55, 40, 30);
    setLayout(null);
    add(previousone, null);
    add(playerButton, null);
    add(nextone, null);
    // JSlider VolumeControl = new JSlider();
    // VolumeControl.setBounds(275, 55, 40, 30);
    // VolumeControl.setPaintLabels(true);
    // add(VolumeControl);
    setVisible(true);
    }}
      

  3.   


    首先谢谢,用了你的方法之后问题确实是解决了,
    但是能否请你详细解释一下呢?我原来的哪种方法错在哪里?是那个component 挡住了那些个button?
      

  4.   

    是的,就是MainFrame中的那个canvas,你用的是JComponent匿名子类方式定义的。这个Component自己绘自己,绘的时候就把几个按钮盖住了。
    但如果改在MainPanel中,让Panel自己绘背景,则绘完后Panel自动重绘它自己的组件(你的按钮),因而问题就解决了。
      

  5.   


    这样是可以了,但是出现了一个新的问题 我在button上加的那些图片不能显示了。
      

  6.   

    JButton上加图片,用setIcon方法。
      

  7.   

    我调了好几个小时,最后一下子来了灵感,解决的方法就是把所有的按钮添加完了只后在来个刷新函数就ok了。     SwingUtilities.updateComponentTreeUI(this);