Z góry chciałbym zaznaczyć że to moje początki wiec sorry za drastyczne błędy :d . Docelowo programik ma służyć do prostej obróbki grafiki (negatyw itp.)ale jak na razie udało mi się stworzyć tylko menu :-(. No i zaczęły się problemy :| Myślę o rozbudowywaniu o jakieś dodatkowe elementy w przyszłości tego stworka wiec dla przejrzystości i czytelności uznałem iż najlepiej będzie każde nowe zdarzenie w menu np otwieranie pliku napisać w nowej klasie. Siedzę już drugi dzień nad tym przejrzałem tutki na necie no i nie znalazłem otwierania obrazka przez JFileChooser w innej klasie. Wiec proszę o jakieś info które pozwoli mi posunąć się trochę do przodu. Zatrzymałem się an tym iż po wywołaniu klasy z JFileChooser nie wiem jak sensownie zwrócić obiekt BufferedImage funkcją czy konstruktorem (nic mi nie wychodzi a wymyślałem już niezłe potworki :). No 2 sprawa jak to wyświetlić [glowa] . HELP HILFE POMOCY
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.io.IOException;
public class test extends JFrame
{
BufferedImage img;
public test(BufferedImage i) {
JPanel panel = new JPanel();
img = i;
System.out.print(img);
}
/*public Dimension getPreferredSize() {
if (img == null) {
return new Dimension(100,100);
} else {
return new Dimension(img.getWidth(null), img.getHeight(null));
}
}*/
public void paint(Graphics g){
g.drawImage(img, 0, 0,null);
System.out.println("to jest drawImage test "+img);
}
public static void main (String[] args)
{
try {UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());}
catch (Exception e)
{System.out.println("Nie mozna ustawic GUI"); }
JFrame frame = new JFrame();
frame.setSize(400,400);
frame.setTitle("Image browser");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//obiekt klasy toolkit aby pobrac rozmiar okna i ustawic na srodku
Toolkit toolkit = frame.getToolkit();
Dimension size = toolkit.getScreenSize();
frame.setLocation(size.width/2 - frame.getWidth()/2,size.height/2 - frame.getHeight()/2);
JPanel panel = new JPanel();
frame.getContentPane().add(panel);
//If we call setLayout(null) we can position our components absolutely.
panel.setLayout(null);
//Tooltip do panelu
panel.setToolTipText("Panel");
JMenuBar menubar = new JMenuBar();
ImageIcon icon = new ImageIcon("exit16.png");//do sprawdzenia
JMenu file = new JMenu("File");
file.setMnemonic(KeyEvent.VK_F); //skrot klawisowy alt-f
JMenu processing = new JMenu("Processing");
processing.setMnemonic(KeyEvent.VK_P);
JMenu help = new JMenu("Help");
help.setMnemonic(KeyEvent.VK_H);
JMenuItem open = new JMenuItem("Open");
open.setMnemonic(KeyEvent.VK_O);
open.setToolTipText("Open file");
open.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
FileOpen openfile = new FileOpen();
//System.out.print(image);
}
});
JMenuItem save = new JMenuItem("Save");
save.setMnemonic(KeyEvent.VK_S);
save.setToolTipText("Save file");
save.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
FileSave savefile = new FileSave();
}
});
JMenuItem fileClose = new JMenuItem("Exit",icon);
fileClose.setMnemonic(KeyEvent.VK_X);
fileClose.setToolTipText("Exit application");
fileClose.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
});
JMenuItem about = new JMenuItem("About");
save.setMnemonic(KeyEvent.VK_A);
about.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
AboutFrame windowAbout = new AboutFrame();}});
frame.setJMenuBar(menubar);
file.add(open);
file.add(save);
file.add(fileClose);
help.add(about);
menubar.add(file);
menubar.add(processing);
menubar.add(help);
frame.setVisible(true);
}
}
a to klasa z JFileChooser
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
public class FileOpen extends JFrame{
public static BufferedImage image = null;
public FileOpen(){
JFileChooser fc = new JFileChooser();
FileFilter filter = new FileNameExtensionFilter("jpg files", "jpg");
fc.addChoosableFileFilter(filter);
int retvalue = fc.showOpenDialog(FileOpen.this);
if (retvalue == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
try {
image = ImageIO.read(file);// i nie wiem co tu dalej
}
catch (IOException e) {
System.out.print(e);
e.printStackTrace();
}
}
}
}
Z góry dzięki za wzystkie wskazówki