jScrollPane com Imagem = PhotoShop

1 resposta
C

Olá pessaol,

Estou desenvolvendo um programa que visualiza imagens grandes em uma janela.

Além dos navegadores normal do Scroll, gostaria de mover a imagem dentro do scroll utilizando o mouse (mouseDragged?!), como é feito no PhotoShop por exemplo.

Não consegui achar no JScrollPane as funções para alterar a posição do scroll.

Alguém poderia me dar uma dica?

Uso o NetBenas para desenvolver e o código parcial que estou usando é:

private void jLabel1MouseMoved(java.awt.event.MouseEvent evt) {
        jLabel1.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        try {
            File file = new File("C:/img.jpg");
            BufferedImage img = ImageIO.read(file);
            int x=img.getWidth();
            int y=img.getHeight();
            BufferedImage buffer =new BufferedImage(x, y, BufferedImage.TYPE_INT_RGB);
           Graphics g = buffer.createGraphics();
           g.drawImage(img,0,0,null);
            jLabel1.setIcon(new ImageIcon(buffer));
        } catch (IOException e) {
            System.out.println("ERRO: "+e);
        }
    }


1 Resposta

C

Acho que ninguém tem nenhuma dica :frowning:

Mas seguinte, consegui achar uma solução usando JViewport, não ficou bonita porém resolveu meu problema.

Quem quiser melhorar o código e postar o resultado agradeço:

private void jLabel1MouseDragged(java.awt.event.MouseEvent evt) {                                     
        JViewport viewport = new JViewport();
        viewport.setView(jLabel1);
        Point p=viewport.getViewPosition();
        if(evt.getX()<pX&&evt.getX()%5==0){
            p.x-=10; //move esquerda
        }
        if(evt.getX()>pX&&evt.getX()%5==0){
            p.x+=10; //move direita
        }
        if(evt.getY()<pY&&evt.getY()%5==0){
            p.y-=10; //move cima
        }
        if(evt.getY()>pY&&evt.getY()%5==0){
            p.y+=10; //move baixo
        }
        viewport.setViewPosition(p);
        jScrollPane1.setViewport(viewport);
        jLabel1.getParent().repaint();
        pX=evt.getX();
        pY=evt.getY();
    }                                    

    
    private void jLabel1MousePressed(java.awt.event.MouseEvent evt) {                                     
        pX=evt.getX();
        pY=evt.getY();
    }
Criado 3 de setembro de 2007
Ultima resposta 4 de set. de 2007
Respostas 1
Participantes 1