Просмотр миниатюр изображений / редактор в JFrame - PullRequest
1 голос
/ 01 марта 2012

Может ли кто-нибудь подсказать мне, как загрузить несколько изображений на одной вкладке, и после нажатия на конкретное изображение оно должно открыться на другой вкладке для обработки изображений?

вот часть моего кода.здесь вместо того, чтобы рисовать изображение, я фактически должен был открыть загрузку изображений и при выборе определенного изображения это должно открыться к другой вкладке.подскажите пожалуйста как это делается с помощью jlist или любым другим способом ..

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

public class SwindDesign {
public static void main(String[] args) throws IOException {
    JFrame frame = new JFrame("Split Pain");
    frame.setSize(700, 500);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLayout(new GridLayout());

    //panel
    JPanel panel = new JPanel();
    panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
    panel.add(new PicturePanel());

   JTabbedPane jtp = new JTabbedPane();

     jtp.addTab("Set Image", panel);
      jtp.addTab("Compare Image", new JButton());
      frame.add(jtp);

    }
}
class PicturePanel extends JPanel {

File folder = new File("C:/Documents and Settings/All Users/Documents/My Pictures/Sample Pictures");
File[] listOfFiles = folder.listFiles();
ImageIcon[] img ;
JComponent lblimg;
JTabbedPane jtp = new JTabbedPane();
private BufferedImage[] b = new BufferedImage[10];

public PicturePanel() throws IOException {
    for (int i = 0; i < listOfFiles.length; i++) {
        System.out.println("chek panth"+listOfFiles[i].getName().toString());
        b[i] = ImageIO.read(new File("C:/Documents and Settings/All Users/Documents/My Pictures/Sample Pictures/" + listOfFiles[i].getName().toString()));
    }
}

@Override
protected void paintComponent(Graphics g) {
    super.paintComponents(g);
    Graphics2D g2 = (Graphics2D) g;
    int k = 10;
    for (int j = 0; j < listOfFiles.length - 1; j++) {
        g2.drawImage(b[j], k, 0, 100, 100, null);
        k = k + 75;
        }
    }
}

1 Ответ

4 голосов
/ 01 марта 2012

Может кто-нибудь предложить мне, как загрузить несколько ..

Используйте цикл.

.. изображения ..

Использование ImageIO.read(File/URL/InputStream)

на вкладке ..

Добавьте JPanel на вкладку с подходящей раскладкой, Е.Г. FlowLayout или GridLayout. Поместите изображение в неокрашенный JButton и добавьте его на панель.

.. и после нажатия на конкретное изображение ..

Добавьте ActionListener к кнопке.

.. он должен открыть в другой вкладке для обработки изображений.

JTabbedPane.addTab("image name", imageEditorComponent)

...