Ladda in bild i Java med JFileChooser
Hej
Jag har ett litet problem med en uppgift jag sitter med i Java. Uppgiften går ut på att bygga ett program där användaren först laddar in en bild i programmet och sedan ska man kunna lägga ut punkter på bilden som kommer att vara platser. Meningen är att en karta ska laddas in och man lägger till punkter som ska vara städer. Sedan ska man kunna välja två punkter för att göra en förbindelse och mata in hur man tar sig mellan punkterna (t ex flyg) och hur lång tid det tar. När man lägger till en punkt ska denna platsen även lägga sig i en lista. Man ska sedan få fram hur man snabbast tar sig från en punkt till en annan (t ex om A-->B-->C-->D tar 1 timme och A-->D tar 2 timmar så ska man få fram att A-->B-->C-->D är snabbast). Detta är grunduppgiften, men nu till mitt problem:
Jag har fastnat på när användaren ska ladda in en bild som sedan ska lägga sig i en panel. Meningen är att man ska gå in i menyn högst upp i programmet, Arkiv, och sedan välja "Öppna" så ska en ruta komma upp där man väljer en bildfil att mata in i programmet. Hur gör jag detta? Jag fattar att det är JFileChooser som ska användas. Det jag undrar är också är hur man lägger in bilden i en panel. Bilden ska vara som en bakgrundsbild där man senare ska kunna lägga ut punkter. Den ska också anpassa sig efter fönstret, dsv minskar man fönstret så ska även bilden bli mindre, den ska fylla en hel panel. Så jag vill helt enkelt få in den bild som användaren väljer från en filhanterare in i panelen.
Programmet är tänkt att se ut såhär: Yfrog Photo : yfrog.com/emnamnlsvyj
Min kod hittills:
import java.util.*;
import javax.swing.*;
import java.awt.*;
import javax.swing.border.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.filechooser.FileNameExtensionFilter;
class PathFinder extends JFrame implements ActionListener{
JFileChooser fil = new JFileChooser();
PathFinder(){
super ("Kartprogram");
setLayout(new BorderLayout());
filSettings();
JMenuBar menu = new JMenuBar();
setJMenuBar(menu);
JMenu arkiv = new JMenu("Arkiv");
menu.add(arkiv);
JMenu operationer = new JMenu("Operationer");
menu.add(operationer);
JMenuItem nytt = arkiv.add("Nytt");
JMenuItem öppna = arkiv.add("Öppna");
JMenuItem spara = arkiv.add("Spara");
JMenuItem sparasom = arkiv.add("Spara som");
JMenuItem avsluta = arkiv.add("Avsluta");
öppna.addActionListener(this);
avsluta.addActionListener(this);
JMenuItem hitta = operationer.add("Hitta");
JMenuItem visa = operationer.add("Visa");
JMenuItem nyP = operationer.add("Ny plats");
JMenuItem nyF = operationer.add("Ny förbindelse");
JMenuItem ändraF = operationer.add("Ändra förbindelse");
EtchedBorder e = new EtchedBorder();
JPanel norr = new JPanel();
add(norr, BorderLayout.NORTH);
JButton hittaKnapp = new JButton("Hitta väg");
norr.add(hittaKnapp);
JButton visaKnapp = new JButton("Visa");
norr.add(visaKnapp);
JButton nyPKnapp = new JButton("Ny plats");
norr.add(nyPKnapp);
JButton nyFKnapp = new JButton("Ny förbindelse");
norr.add(nyFKnapp);
JButton ändraFKnapp = new JButton("Ändra förbindelse");
norr.add(ändraFKnapp);
JPanel väst = new JPanel();
väst.setLayout(new BoxLayout(väst, BoxLayout.Y_AXIS));
väst.setPreferredSize(new Dimension(175,600));
add(väst, BorderLayout.WEST);
JLabel från = new JLabel(" Från:");
väst.add(från);
JTextArea frånarea = new JTextArea();
frånarea.setEditable(false);
frånarea.setBorder(e);
väst.add(frånarea);
JLabel till = new JLabel(" Till:");
väst.add(till);
JTextArea tillarea = new JTextArea();
tillarea.setEditable(false);
tillarea.setBorder(e);
väst.add(tillarea);
JLabel plats = new JLabel(" Välj platser från:");
väst.add(plats);
JRadioButton kartan = new JRadioButton("Kartan", true);
väst.add(kartan);
JRadioButton listorna = new JRadioButton("Listorna");
väst.add(listorna);
ButtonGroup bg = new ButtonGroup();
bg.add(kartan);
bg.add(listorna);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocation(300,200);
setSize(1000, 700);
}//Konstruktor
public void ActionPerformed(ActionEvent e){
if(e.getActionCommand().equals("Öppna")){
int ret = fil.showDialog(null, "Öppna bild");
if(ret == JFileChooser.APPROVE_OPTION){
laddabild();
}
}
if(e.getActionCommand().equals("Avsluta")){
System.exit(0);
}
}
public void actionPerformed(java.awt.event.ActionEvent e){
}
public void laddabild(){ //här tänkte jag ladda in bilden
}
private void filSettings(){
FileNameExtensionFilter filter = new FileNameExtensionFilter("Image files", "jpg", "gif", "jpeg", "psd");
fil.setFileFilter(filter);
}
public static void main (String[]args){
new PathFinder();
}//main
}//class