Problem mit den Einfügen von großen Bildern mit ScrollListe



  • hi,
    ich bin gerade dabei mich in Java neu einzuarbeiten. Und wollte jetzt ein Applet erstellen was ein großes Bild anzeigt(2048x2500) mit zwei Scrollbalken um den ganzen Bildbereich zu erkennen.

    Leider habe ich bisher nicht erlesen können wie man das Bild in ein Container packt und habe es daher über die paint() Methode gezeichnet. Nur müssen die Scrollleisten ja irgendwie mit den Bild verknüpft werden, aber wie?

    😕

    import java.awt.*;
    import java.awt.Graphics;
    import java.awt.Image;
    import javax.swing.*;
    
    public class CDialog extends java.applet.Applet {
    	 private Image whig;
    	 private JFrame fra = new JFrame();
    	 private JPanel pan = new JPanel();
    	 private JScrollPane scrollPane = new JScrollPane( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, 
                 JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS );
    
    	 public void init(){
    		 fra.add(pan);
    		 pan.add(scrollPane);
    
    		 whig = getImage(getCodeBase(), "../../pic/bild.jpg");
    	 }
    
    	 public void paint(Graphics screen) {
    	     int iWidth =  whig.getWidth( this) / 10;
    	     int iHeight = whig.getHeight(this) / 10;
    	     int xPos = 10;
    	     xPos += (iWidth / 40) + 10;
    	     screen.drawImage(whig, xPos, 10, this);
    	 }
    }
    

    Entweder zeigt er die Scrollleisten an oder das Bild :-S nur nie beides 😞
    Wie kann ich die Scrollleisten mit den Bild verknüpfen?



  • schau dir evtl mal ein swing tutorial an, das ist ganz großes durcheinander bei dir im code, dass es sich nicht lohnt auf alles einzeln einzugehen.



  • Hi, Danke für die schnelle Antwort.
    Ich habe mir bisher paar Bücher besort "Java in 21 Tagen" und "Java ist eine Insel", nur das erste Buch arbeitet mit den AWT Paketen und das zweite mit Swing. Nur eine direkte Antwort habe ich nicht gefunden.

    Meinst du mit den "Swing Tutorial" die drei Java Bücher die zum download stehen?



  • Mal ein bischen was grundsätzliches:

    Die Paint()-Methode zu überschreiben ist keine so gute Idee weil du damit
    die gesamte Zeichenfunktionalität kaputt machst. Überschreib besser die PaintComponent() und ruf die Originalfunktion darin wieder auf, damit das ursprüngliche Verhalten des Containers erhalten bleibt.

    Zu der Scrollpane. Wenn du etwas Scrollen willst musst du es als Viewportview zu der Scrollpane hinzufügen(im Konstruktor oder mittels setViewportView()).

    Eine Möglichkeit das zu erreichen was du willst ist die Folgende:

    Schreib eine Klasse die von JPanel erbt und lass diese dein Bild mittels der überschrieben Methode zeichnen. Ein Objekt deiner Klasse fügst du dann zur JScrollpane hinzu und diese kommt in dein JFrame(in die Contentpane)

    Wenn ich mich nich irre sollte das Klappen.


Anmelden zum Antworten