简体   繁体   中英

Why won't my image display in my layout?

I'm working on this project in Java and need an image to display, along with a bio, and button that plays a song/sound. I finished the button and bio but I can figure out how to get the image to display in the NORTH part of the layout along with the button in the center part, any help would be great.

This is my error: The method add(String, Component) in the type Container is not applicable for the arguments (Image, String)

public void init() {
    // image
    myPicture = getImage(getCodeBase(), "sample.jpg");
    // THIS IS WHERE MY PROBLEM IS vvvvvvv      
    add(myPicture, BorderLayout.NORTH);

    add(bio);

    paneSouth.add(play);
    getContentPane().add(paneSouth, BorderLayout.SOUTH);
    mySound = getAudioClip(getDocumentBase(), "sample.wav");
    play.addActionListener(new  ActionListener() {
        public void actionPerformed(ActionEvent e) {
            mySound.play();
        }});    
}

public void paint(Graphics g){
    g.drawImage(myPicture, 10, 10, this);
}

private JPanel paneSouth = new JPanel();
private TextArea bio = new TextArea("bio thing");
private JButton play = new JButton("Play");
private AudioClip mySound;
private Image myPicture;

}

EDIT:

public void init() {
    // image
    ImageIcon icon = new ImageIcon(myPicture);
    JLabel myLabelImage = new Image(icon);
    add(myLabelImage, BorderLayout.NORTH);

    // bio
    add(bio);
    add(bio, BorderLayout.CENTER);

    // sound
    paneSouth.add(play);
    getContentPane().add(paneSouth, BorderLayout.SOUTH);
    mySound = getAudioClip(getDocumentBase(), "sample.wav");
    play.addActionListener(new  ActionListener() {
        public void actionPerformed(ActionEvent e) {
            mySound.play();
        }});    
}

private JPanel paneSouth = new JPanel();
private TextArea bio = new TextArea("bio.");
private JButton play = new JButton("Play");
private AudioClip mySound;
private Image myPicture;
}

I guess you are using JApplet because you are using Swing components. Try something like this:

public class ImageApplet extends JApplet {

    private JPanel paneSouth = new JPanel();
    private JTextArea bio = new JTextArea("bio thing");
    private JButton play = new JButton("Play");
    private Image myPicture;
    private ImageIcon icon;
    private JLabel label;

    public void init() {
        try {
            URL pic = new URL(getDocumentBase(), "sample.jpg");
            myPicture = ImageIO.read(pic);
            icon = new ImageIcon(myPicture);
            label = new JLabel(icon);
        } catch (Exception e) {
            e.printStackTrace();
        }
        // add image
        add(label, BorderLayout.NORTH);
        // bio
        add(bio, BorderLayout.CENTER);
        // sound
        paneSouth.add(play);
        add(paneSouth, BorderLayout.SOUTH);

        // here add your sound declaration and button event...
    }

    @Override
    public void paint(Graphics g) {
        super.paint(g);
    }
}

And try change your TextArea for a JTextArea since you are only using swing components.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM