ScrollPane geladene jpg-Datei

  • Themenstarter Themenstarter Amateur2000
  • Beginndatum Beginndatum
A

Amateur2000

Hallo,

ich habe folgendes Problem:

ich moechte ein geladenes Bild als ScrollPane einrichten, um es mit ScrollBars verschieben zu koennen, habe aber keine Ahnung, wie ich das machen soll. Bin dankbar fuer jede Hilfe
Code-Beispiele waeren super

Mein Code sieht folgendermassen aus:

Code:
public class PaintOnComponent extends JFrame implements ActionListener { 

  private  PictureHandler drawPanel; 
private JFileChooser fc; 
private JButton b; 

public PaintOnComponent() 
   { 
   b = new JButton ( "Button");    
   b.addActionListener( this); 
   Container c = getContentPane(); 
   c.setLayout (new BorderLayout(3,3)); 
   c.add(b,BorderLayout.NORTH); 
   fc = new JFileChooser(); 
   drawPanel = new PictureHandler(); 
       drawPanel.showImage(fc.getSelectedFile()); 
      drawPanel.addMouseListener(new MouseAdapter() { 
          
         public void mouseClicked(MouseEvent e) 
         { 
            drawPanel.addPoint(e.getPoint()); 
            repaint(); 
         } 
        
      }); 
      drawPanel.setSize(500,500); 
        
      getContentPane().add(drawPanel,BorderLayout.CENTER); 
        
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      setSize(500,500); 
        
   } 
    
public static void main(String[] args) 
   { 
      PaintOnComponent p = new PaintOnComponent(); 
      p.setVisible(true); 
} 

public void actionPerformed(ActionEvent event) { 
   if (event.getSource()==b) { 
      int returnVal = fc.showOpenDialog(PaintOnComponent.this); 
      drawPanel.showImage(fc.getSelectedFile());   // TODO Auto-generated method stub 
    
} 

} 
}


class PictureHandler extends JComponent { 
   BufferedImage bi; 
    
    private ArrayList points = new ArrayList(); 

    public void addPoint(Point p) 
    { 
        points.add(p); 
    } 

   public void showImage(File f) { 
      try { 
         bi = ImageIO.read(f); 
           //bi.setPreferedSize(new Dimension(bi.getWidth(),bi.getHeight())); 
      } 
      catch (Exception e) { 
            System.out.println("Fehler beim Bildladen"); 
         } 
         repaint(); 
         } 
    
      public void paintComponent(Graphics g) { 

        super.paintComponent(g);            
         if (bi != null) { 
            g.drawImage(bi,0,0,bi.getWidth(),bi.getHeight(),Color.white,null); 

         } 
         g.setColor(Color.RED); 
         Iterator it = points.iterator(); 
         while (it.hasNext()) 
         { 
            Point p = (Point) it.next(); 
            g.fillOval(p.x,p.y,5,5); 
         }    
          
      } 
}

Ich arbeite mit eclipse und habe fuer jede Klasse eine eigene Datei angelegt.

Ich hab's schon mit ScrollablePicture versucht, wie es in http://java.sun.com/docs/books/tutorial/uiswing/components/scrollpane.html in einem Beispiel steht, aber da bekomme ich ne Fehlermeldung, weil eclipse ScrollablePicture nicht kennt.
 
Zurück