Scrollbars für bild

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
ich bin gerade dabei als projekt für die schule einen image viewer zu programmiern....doch wenn ich ein bild öffne, welches größer als der bildschirm ist, wird es einfach abgeschnitten. ich wüsste gern wie ich für das bild scrollbars in das programm implementiere.



Code:
public class ImageViewer extends JFrame
{
    public Image image;
    private JMenuBar menuBar;
    
    public ImageViewer()
    {
        //Frame wird eingerichtet
        setTitle("ImageViewer");
        setSize(600,400);
        setLocation(100,100);
        setResizable(false);
        getContentPane().setLayout(new BorderLayout());
        .
        .
        .
    public void paint(Graphics g)
    {
        if(image != null)
        {
            setSize(image.getWidth(this),image.getHeight(this)+50);
            g.drawImage(image,0,50,this);
            g.setColor(Color.black);
        }
        setJMenuBar(menuBar);
    }
        public void print()
    {
        Toolkit tk = Toolkit.getDefaultToolkit();
        PrintJob pj = tk.getPrintJob( new Frame(), "", null );
        if ( pj != null ) {
        Graphics g = pj.getGraphics();
        g.drawImage(image,0,50,this);
        g.dispose();
        pj.end();   
        }
    }
    private void chooseFile()
    {
        FileDialog fd = new FileDialog(this,"Open File",FileDialog.LOAD );
        fd.setFile("*.jpg;*.gif");
        fd.show();
        String path = fd.getDirectory() + fd.getFile();
        image = Toolkit.getDefaultToolkit().getImage(path);
      
        repaint();
       
        
    }
   .
   . 
   .
}
 
Mach eine Klasse die von JComponent erbt, und zeichne auf diese Component. Dann überschreibst du die Methode "getPreferredSize", und gibts dort die Grösse des Bildes zurück. Diese Component fügst du einem JScrollPane hinzu, und das JScrollPane einem Frame/Dialog...

P.S. und Bilder kann man auch sehr gut mit ImageIO laden, dann kriegt man keine Probleme mit Verzögertem Laden.
 
danke..aber könntest du mir das ein bisschen genauer erläutern und vielleicht ein paar codeschnipsel schreiben..weil im moment hab ich wenig ahnung davon

thx
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben