0

Javaを使い始めたばかりで、初心者です。ディレクトリで画像を検索して画像を開くことができるフォトビューアを作成しようとしましたが、プログラムで画像が表示されません。

プログラムを実行すると、プログラムが開き、ディレクトリの検索に使用するメニューバーが表示されますが、画像を選択しても表示されません。TIA。

import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.imageio.ImageIO;

public class ICS
{
private JPanel gui;
private JFileChooser fileChooser;
FilenameFilter fileNameFilter;
private JMenuBar menuBar;
DefaultListModel model; 
public ICS() {
    gui = new JPanel(new GridLayout());

    final JLabel imageView = new JLabel();
    gui.add(imageView);

    fileChooser = new JFileChooser();
    String[] imageTypes = ImageIO.getReaderFileSuffixes();

    menuBar = new JMenuBar();
    JMenu menu = new JMenu("GET PHOTO HERE");
    menuBar.add(menu);
    JMenuItem browse = new JMenuItem("browse");
    menu.add(browse);

    browse.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ae) {
                int result = fileChooser.showOpenDialog(gui);
                if (result==JFileChooser.APPROVE_OPTION) {
                    File eg = fileChooser.getSelectedFile();
                }
            }
        }); 
}

public void loadImages(File directory) throws IOException {
    File[] imageFiles = directory.listFiles(fileNameFilter);
    BufferedImage[] images = new BufferedImage[imageFiles.length];
}

public Container getGui() {
    return gui;
}

public JMenuBar getMenuBar() {
    return menuBar;
}

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable(){
            public void run() {
                ICS imageList = new ICS();

                JFrame f = new JFrame("Image Browser");
                f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                f.add(imageList.getGui());
                f.setJMenuBar(imageList.getMenuBar());
                f.setLocationByPlatform(true);
                f.pack();
                f.setSize(800,600);
                f.setVisible(true);
            }
        });
}

}

4

2 に答える 2

2

選択したファイルに対して何もしていません。に空がある場合JLabel、そのコンポーネントにをJPanel設定するだけで済みます。Icon

imageView.setIcon(new ImageIcon(eg.getPath()));
于 2013-03-24T20:38:32.500 に答える
0

あなたがそれを言ったことがないので、それは画像に対して何もしていません。アクションリスナーで、ファイルチューザーを作成し、選択したファイルを取得しましたが、それを使用して何もすることはありません。アクションリスナー内のローカル変数として定義するだけで、リスナーが終了するとすぐに破棄されます。

アクションリスナー内で、ユーザーが選択したファイルを取得した後、実際に画像を表示する関数呼び出しを行う必要があります。

また、ICSはクラスのひどい名前です。プログラムが大きくなり、すべてが何をしたかを思い出そうとしているときは、自分の参照と健全性のためにクラス名を説明する必要があります。

于 2013-03-24T20:39:41.657 に答える