Wybranie obrazka z pliku i wyświetlenie go

0

Witam! Jestem początkujący jeśli chodzi o programowanie i jave dlatego wybaczcie mi jeśli są tutaj jakiejś karygodne błędy... [wstyd] Mam problem z wyświetleniem wybranego obrazka i nie mam pojęcia dlaczego nie chce się on wyświetlić... bardzo proszę o pomoc!

package fotoszop3;

import java.awt.BorderLayout;
import java.awt.Graphics;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

import javax.swing.JFileChooser;

import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class okno extends javax.swing.JFrame {

    public okno() {
        setTitle("Program graficzny");
       
            JPanel panel = new JPanel() {

            @Override
            public void paintComponent(Graphics g) {
                super.paintComponents(g);
                if (image != null) {
                    g.drawImage(image, 0, 0, null);
                }
            }
        };

        add(panel, BorderLayout.CENTER);
         
        initComponents();
   
    }
    
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenu2 = new javax.swing.JMenu();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jMenu1.setText("File");

        jMenuItem1.setText("Otworz");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem1);

        jMenuBar1.add(jMenu1);

        jMenu2.setText("Edit");
        jMenuBar1.add(jMenu2);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 279, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>                        

private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
openfile();
}                                          

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new okno().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    // End of variables declaration                   

    private void openfile() {
                JFileChooser chooser = new JFileChooser();
        chooser.setCurrentDirectory(new File("."));
        chooser.setFileFilter(new javax.swing.filechooser.FileFilter() {

            public boolean accept(File f) {
                String name = f.getName().toLowerCase();
                return name.endsWith(".gif") || name.endsWith(".jpg") || name.endsWith(".jpeg") || f.isDirectory();
            }

            public String getDescription() {
                return "Pliki graficzne";
            }
        });
        int r = chooser.showOpenDialog(okno.this);
        if (r != JFileChooser.APPROVE_OPTION) {
            return;
        }
        try {
            image = ImageIO.read(chooser.getSelectedFile());
        } catch (IOException e) {
            JOptionPane.showMessageDialog(this, e);
        }
        repaint();
    }

    private String fileName;
    private BufferedImage image;
}
    
0

Namieszałeś z menadżerami rozkładu. "Zakomentuj" ten fragment

       javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 279, Short.MAX_VALUE)
        );

dodaj

import java.awt.Dimension;

oraz coś w rodzaju

        setPreferredSize(new Dimension(400,300));

przed

        add(panel, BorderLayout.CENTER);
0
bogdans_niezalogowany napisał(a)

Namieszałeś z menadżerami rozkładu. "Zakomentuj" ten fragment

       javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 279, Short.MAX_VALUE)
        );

Niestety nie mogę nic edytować co się znajduje tutaj:

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

    jMenuBar1 = new javax.swing.JMenuBar();
    jMenu1 = new javax.swing.JMenu();
    jMenuItem1 = new javax.swing.JMenuItem();
    jMenu2 = new javax.swing.JMenu();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jMenu1.setText("File");

    jMenuItem1.setText("Otworz");
    jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jMenuItem1ActionPerformed(evt);
        }
    });
    jMenu1.add(jMenuItem1);

    jMenuBar1.add(jMenu1);

    jMenu2.setText("Edit");
    jMenuBar1.add(jMenu2);

    setJMenuBar(jMenuBar1);

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 400, Short.MAX_VALUE)
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 279, Short.MAX_VALUE)
    );

    pack();
}// </editor-fold> 
> 
> I co teraz mam zrobić?  [glowa]
0

Może jakieś propozycje?? :>

0

Kilka:

  1. zmień IDE
  2. poznaj lepiej IDE byś kontrolował generowany kod
  3. zamknij IDE, otwórz plik w edytorze dla programistów i wprowadź zmiany
    3.a) wróć do IDE, może zaakceptuje zmiany
    3.b) skompiluj "z ręki"
    Pozdrawiam

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