Problem z sciagnieciem obrazka class URL

0

Cześć,

jestem początkujący i nie wiem dlaczego nie działa mi sciagniecie obrazka z internetu.

Mam 3 klasy napisane w programie Eclipse:

import javax.swing.JFrame;
import javax.swing.JPanel;

public class ObrazFrame extends JFrame {

	public ObrazFrame() {
		super("Program obrazkowy");

		JPanel obrazPanel = new ObrazPanel();
		add(obrazPanel);

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		pack();
		setVisible(true);
	}
}

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JPanel;
import java.net.URL;

public class ObrazPanel extends JPanel {

	private BufferedImage image;

	public ObrazPanel() {
		super();

		URL url = new URL("http://www.mkyong.com/image/mypic.jpg");
		try {
			image = ImageIO.read(url);
		} catch (IOException e) {
			System.err.println("Blad odczytu obrazka");
			e.printStackTrace();
		}

		Dimension dimension = new Dimension(image.getWidth(), image.getHeight());
		setPreferredSize(dimension);
	}

	@Override
	public void paintComponent(Graphics g) {
		Graphics2D g2d = (Graphics2D) g;
		g2d.drawImage(image, 0, 0, this);
	}
}

oraz uruchamiajace test:

import java.awt.EventQueue;
public class Test {
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			@Override
			public void run() {
				new ObrazFrame();
			}
		});
	}
}

nie działa mi ten fragment:

URL url = new URL("http://www.mkyong.com/image/mypic.jpg");
		try {
			image = ImageIO.read(url);

wywala błąd:

"Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problem:
Unhandled exception type MalformedURLException"

Dlaczego tak sie dzieje ?

Jesli zmienie ten powyzszy bledny kod na :

File imagefile = new File("test.jpg");
		try {
			image = ImageIO.read(imagefile );

wszystko zadziała poprawnie.

Bardzo proszę o pomoc,
jest to pewnie bardzo prosta rzecz, której ja niestety nie widzę :(

Pozdrawiam,
Jacek Antek

0

No bo konstruktor URL może rzucić wyjątek java.net.MalformedURLException a Ty z kolei musisz to obsłużysz. Przenosząc tę linijkę do bloku try zapewniasz obsługę dla tego wyjątku przez to, że łapiesz java.io.IOException z którego Malformed... dziedziczy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1