2016-04-22 7 views
0
private void uploadimagebuttonActionPerformed(java.awt.event.ActionEvent evt) {             
     JFileChooser input= new JFileChooser(); 
    input.setDialogTitle("upload the image"); 
    input.setFileSelectionMode(JFileChooser.FILES_ONLY); 
     int returnval=input.showOpenDialog(this); 
     BufferedImage image=null; 
     if(returnval==JFileChooser.APPROVE_OPTION) 

     { 
      java.io.File file=input.getSelectedFile(); 
      java.awt.image.BufferedImage bi; 
      try 
      { 
       image=ImageIO.read(file); 

       Label.setIcon(new ImageIcon(image)); 


      } 
       catch(IOException e) 
       { 
        e.printStackTrace(); 
       } 
     this.pack(); 

     } 
    } 


private void LabelMousePressed(java.awt.event.MouseEvent evt) {         
     jScrollPane1.getVerticalScrollBar().setPreferredSize(new Dimension(0,0)); 
     Point location = MouseInfo.getPointerInfo().getLocation(); 
     Label.setAlignmentX(location.x+100); 
     Label.setAlignmentY(location.y+100); 
    } 

マウスの動きに応じてjLabelのアイコンの位置をドラッグして調整し、マウスでアイコンを押し続けて水平にドラッグすると、スクロールバーのないマウスの動きに合わせてスクロールします。私は自動スクロールオプションをチェックしましたが、うまくいきません。 助けてください。 MouseInfoは本当にこの仕事のための適切なツールではないとして、スクロールバーなしでスクロールペインの内側に配置スクロールバーのないマウスの動きに合わせてjLabelのアイコンをドラッグして調整するにはどうすればよいですか?

アイコンは、コールの

http://i.stack.imgur.com/1wyQD.jpg

+0

を求めている[マウスリスナーを書く方法](http://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener .html) – MadProgrammer

答えて

2

あなたの最初のポートは、How to Write a Mouse Listenerでなければなりません。

一つの解決策はJScrollPaneを使用することが、スクロールバーを削除するかもしれない、これの利点は、それが自動的にリサイズチェックし、コンポーネントの境界の世話をされ...

Scroll Me

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.EventQueue; 
import java.awt.Point; 
import java.awt.Rectangle; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import java.io.File; 
import java.io.IOException; 
import javax.imageio.ImageIO; 
import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JViewport; 
import javax.swing.SwingUtilities; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 

public class Test { 

    public static void main(String[] args) { 
     new Test(); 
    } 

    public Test() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
        ex.printStackTrace(); 
       } 

       JFrame frame = new JFrame("Testing"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.add(new TestPane()); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 

    public class TestPane extends JPanel { 

     private JLabel label; 

     public TestPane() { 
      setLayout(new BorderLayout()); 
      try { 
       label = new JLabel(new ImageIcon(ImageIO.read(...))); 
       label.setAutoscrolls(true); 
       JScrollPane scrollPane = new JScrollPane(label, JScrollPane.VERTICAL_SCROLLBAR_NEVER, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 
       scrollPane.setBorder(null); 
       add(scrollPane); 

       MouseAdapter ma = new MouseAdapter() { 

        private Point origin; 

        @Override 
        public void mousePressed(MouseEvent e) { 
         origin = new Point(e.getPoint()); 
        } 

        @Override 
        public void mouseReleased(MouseEvent e) { 
        } 

        @Override 
        public void mouseDragged(MouseEvent e) { 
         if (origin != null) { 
          JViewport viewPort = (JViewport) SwingUtilities.getAncestorOfClass(JViewport.class, label); 
          if (viewPort != null) { 
           int deltaX = origin.x - e.getX(); 
           int deltaY = origin.y - e.getY(); 

           Rectangle view = viewPort.getViewRect(); 
           view.x += deltaX; 
           view.y += deltaY; 

           label.scrollRectToVisible(view); 
          } 
         } 
        } 

       }; 

       label.addMouseListener(ma); 
       label.addMouseMotionListener(ma); 
      } catch (IOException ex) { 
       ex.printStackTrace(); 
      } 
     } 

     @Override 
     public Dimension getPreferredSize() { 
      return new Dimension(200, 200); 
     } 

    } 

} 
実際に

、このソリューションは非常に簡単ですが、他はちょうどトラブル

関連する問題