बटन पर क्लिक करते समय यूआरएल छवि बदलें

मेरे पास यहां एक साधारण जावा स्क्रिप्ट है और यह काम नहीं करती है। मेरे पास यूआरएल से छवियों के साथ एक सरणी है। जब मैं बटन पर क्लिक करता हूं तो मैं इसे बदलना चाहता हूं।

import java.awt.BorderLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class ChangeURLImages 
{   
public static void main( String[] args )
{
    final String[] array = new String[]{"http://s3.amazonaws.com/37assets/svn/765-default-avatar.png", "http://indianraga.in/assets/default-bf4b832252a9579cf3408c88b2601a0e.jpg"};
    BufferedImage image = null;
    try {
        URL url = new URL(array[0]);
        image = ImageIO.read(url);
    } catch (IOException e) {
        e.printStackTrace();
    }

    JFrame f = new JFrame();
    f.setVisible(true);
    f.setSize(500, 600);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    final JLabel label = new JLabel(new ImageIcon(image));
    JButton change = new JButton("Change");

    JPanel p = new JPanel(new BorderLayout());

    p.add(change, BorderLayout.NORTH);
    p.add(label, BorderLayout.CENTER);

    f.add(p);

    change.addActionListener (new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            URL url;
            try {
                url = new URL(array[1]);
                BufferedImage image = ImageIO.read(url);
                JLabel label = new JLabel(new ImageIcon(image));
            } catch (IOException e1) {
               //TODO Auto-generated catch block
                e1.printStackTrace();
            }

        }
    });

}
}

मैंने कोशिश की और कोशिश की। विभिन्न तरीकों से, लेकिन मैं ऐसा करने में सक्षम नहीं था।

क्या कोई इस में मेरी मदद कर सकता है? धन्यवाद।

1

2 उत्तर

आप लेबल का एक नया उदाहरण बना रहे हैं और इसके साथ कुछ भी नहीं कर रहे हैं। आपको उस लेबल को बदलना होगा जो पहले से ही कंटेनर के अंदर है।

label.setIcon(new ImageIcon(image)); instead of JLabel label = new JLabel(new ImageIcon(image));

3
जोड़ा

अपने ईवेंट हैंडलर में, आप एक नया जेएलएबल बनाते हैं, लेकिन नया जेएलएबल कभी प्रदर्शित नहीं होता है क्योंकि आप इसके साथ कुछ भी नहीं करते हैं। यह पुराने जेएलएबल को प्रतिस्थापित नहीं कर रहा है जो पुरानी छवि के साथ प्रदर्शित होता है।

लाइन बदलें:

JLabel label = new JLabel(new ImageIcon(image));

आपके ईवेंट हैंडलर में यह:

label.setIcon(new ImageIcon(image)); 

इससे लेबल पर आइकन बदल जाता है जो पहले से प्रदर्शित होता है।

1
जोड़ा
यह काम करता हैं। आपका बहुत बहुत धन्यवाद।
जोड़ा लेखक onlize, स्रोत
कृपया उत्तर को स्वीकार करें अगर यह समस्या को हल करने में मदद करता है। "क्या आप जानते हैं कि मैं उन तस्वीरों का आकार कैसे बदल सकता हूं?" 'एक छवि का आकार बदलें' 'एकाधिक संसाधनों को लोड करने' के लिए एक पूरी तरह से अलग सवाल है - कृपया इसे एक नए प्रश्न (साइट खोजने के बाद) पर पूछें। )।
जोड़ा लेखक Andrew Thompson, स्रोत