Pregunta

¿Cómo generar o mostrar la vista en miniatura de imágenes en una pestaña de Jtabbedpane en Java y permitir al usuario haga clic en esa imagen que se muestra en otra pestaña de un jtabbedpane?


    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;
            }
    }
}

Bueno, esto lo que estoy intentando aquí se instó en la imagen de dibujo, quiero cargar y mostrar la imagen, por lo que puedo hacer clic en la imagen y abrirlo en otra pestaña para editar la imagen. Algunos lo capaces de saber que se puede hacer mediante el uso de Jlist pero cómo no lo sé.Por favor, sugerirme el camino

¿Fue útil?

Solución

Aquí hay algunos consejos para ayudarlo:

  1. Cree un panel con GridLayout para mostrar imágenes en la vista de miniaturas.
  2. Configure imágenes como icono de imagen en JLABEL y agregue las etiquetas al panel anterior.
  3. Agregue este panel a jtabbedpane como una pestaña.
  4. implementar ONCLICK Oyeers of Image Etiquetas. Y el evento ocurre, obtenga esa imagen y visualice en alguna otra pestaña que esta.

    para mostrar la imagen en otra pestaña:

    1. Crear un panel con una etiqueta en ella.
    2. Agregue este nuevo panel a Jtabbedpane.
    3. Cuando alguien hace clic en una imagen de la vista en miniatura de imagen, obtenga esa imagen en su escucha y configure esa imagen en Jlabel del nuevo panel.

      Para obtener más ayuda, muéstrenos lo que ha probado y mejor si puede publicar un ejemplo de código de trabajo corto que demuestre su problema.



      Editar

      por otro requisito descrito en el comentario:

      boolean isSelected = false;
      JButton jButton;
      void imageClickTest() throws MalformedURLException, IOException {
          final JFrame frame = new JFrame("Demo");
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.setSize(400, 400);
          frame.setLayout(new BorderLayout());
      
          final JTabbedPane tabbedPane = new JTabbedPane();
      
          JPanel pane = new JPanel();
          JButton button;
          pane.setLayout(new BorderLayout());
      
          button = new JButton("I'm second button");
          button.setIcon(new ImageIcon(ImageIO.read(new URL("http://cdn5.iconfinder.com/data/icons/ie_Financial_set/24/26.png"))));
          button.addActionListener(new ActionListener() {
              @Override
              public void actionPerformed(ActionEvent e) {
                  JButton button = (JButton) e.getSource();
                  if(isSelected) {
                      System.out.println("two selected");
                      button.setBorder(BorderFactory.createEtchedBorder());
                      isSelected = false;
                      JSplitPane jSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
                      jSplitPane.add(button);
                      jButton.setBorder(BorderFactory.createEtchedBorder());
                      jButton.setText("First click me");
                      jSplitPane.add(jButton);
                      jSplitPane.setDividerLocation(150);
                      tabbedPane.addTab("Image Comparision", jSplitPane);
                  }
              }
          });
          pane.add(button, BorderLayout.SOUTH);
      
          button = new JButton("First click me");
          button.setIcon(new ImageIcon(ImageIO.read(new URL("http://cdn4.iconfinder.com/data/icons/REALVISTA/web_design/png/24/testimonials.png"))));
          button.addActionListener(new ActionListener() {
              @Override
              public void actionPerformed(ActionEvent e) {
                  JButton button = (JButton) e.getSource();
                  button.setBorder(BorderFactory.createLineBorder(Color.RED, 5));
                  button.setText("Now Click on second button.");
                  jButton = button;
                  isSelected = true;
              }
          });
          pane.add(button, BorderLayout.NORTH);
      
          button = new JButton("I'm just extra button");
          button.setIcon(new ImageIcon(ImageIO.read(new URL("http://cdn2.iconfinder.com/data/icons/crystalproject/64x64/apps/kservices.png"))));
          button.setEnabled(false);
          pane.add(button, BorderLayout.CENTER);
      
          tabbedPane.addTab("ImagePane", pane);
          frame.add(tabbedPane, BorderLayout.CENTER);
          frame.setVisible(true);
      }
      

      Este es solo un código de demostración, es posible que deba modificarlo según sus requisitos. Esto es solo para mostrarle cómo puede monitorear, haga clic en 2 componentes y obtenga en otra pestaña.

      Desea que haya hecho una pregunta diferente para esto, podría haber recibido algunas ventanas / respuestas aceptadas o las mejores Algunas recompraos o los peores votos de abajo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top