Scroll-Leiste einfügen

Hallo! WIr möchten eine Scrollleiste in unsere Klasse einfügen. Wir wissen jedoch nicht wie. Die Klasse wird durch das Klicken auf einen Button aufgerufen. Wir haben schon probiert dier Scrolleiste selbst einzufügen, jedoch passiert einfach nichts.

Java:
package berechnung;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.ScrollPane;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;


import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;


public class HilfeFenster extends JFrame{
    private BufferedImage img;
    public JScrollPane scroll = new JScrollPane(
            ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
            ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
   
    public HilfeFenster() {
        setDefaultCloseOperation(HIDE_ON_CLOSE);
        setTitle("Hilfe");
        setLayout(new BorderLayout(5, 5));
        int maxWidth = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth();
        int width = Math.min(734, maxWidth);
        setSize(width, 400);
        setMinimumSize(new Dimension(width, 700));
        scroll.setVisible(true);
    }
   
   


   
    public void paint(Graphics g){
        ClassLoader cl = HilfeFenster.class.getClassLoader();
        try {
            img = ImageIO.read(cl.getResourceAsStream("Bilder/HilfeFensterBild.png"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        g.drawImage(img, 0, 0, 734, 959, null);
   
    }

}
 
habt ihr eine add(scroll) methodeeingefügt?
Oder braucht man das bei scroll leisten etwa nicht?
Oder hab ich die methode übersehen?
 
Wir wissen eleider nicht wo und wie :-(
Wie viele objekte habt ihr denn auf eurem JFrame?
Bestimmt nur eines, denn dort kann man nur eines "drauf tun".
Ihr solltet ein JPanel erstellen, das ihr dann mit der add() methode im konstruktor hinzufügt, und dann auf das JPanel den rest drauf tut.
Java:
public class PanelTester extends JFrame{
    JPanel panel;
    // andere felder
   
    public PanelTester() {
        panel = new JPanel();
        panel.add(/*all other stuff*/);
        this.add(panel);
    }
}

EDIT: ne sorry, andersrum, erst die componenten auf das panel, und dann das panel auf'n frame.
 
Zuletzt bearbeitet:
was verstehst du denn nicht?
Oder schreibst du das halt weil du code willst?😉😉😉
Aber das würde dann kosten.🙂😉

eure klasse heißt halt HilfeFenster, meine, die ich geschrieben habe halt PanelTester.

EDIT: Sorry, ihr natürlich.
 
WIr haben es mal probiert umzusetzen, leider funktioniert es immer noch nicht :-(
Java:
package berechnung;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.ScrollPane;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.swing.JLabel;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;

import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;


public class HilfeFensterScroll extends JFrame{
    JPanel panel;
    private BufferedImage img;
    public JScrollPane scroll = new JScrollPane(
            ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
            ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
   
    public HilfeFensterScroll() {
       
        panel = new JPanel();
        panel.add(new JScrollPane(), BorderLayout.CENTER);
          
       
        setDefaultCloseOperation(HIDE_ON_CLOSE);
        setTitle("Hilfe");
        setLayout(new BorderLayout(5, 5));
        int maxWidth = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth();
        int width = Math.min(734, maxWidth);
        setSize(width, 400);
        setMinimumSize(new Dimension(width, 700));
        scroll.setVisible(true);
   
        this.add(panel);
       
    }
   


   
    public void paint(Graphics g){
        ClassLoader cl = HilfeFensterScroll.class.getClassLoader();
        try {
            img = ImageIO.read(cl.getResourceAsStream("Bilder/HilfeFensterBild.png"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        g.drawImage(img, 0, 0, 734, 959, null);
       
    }

}
 
Sorry, ich hab euch jetzt warscheinlich föllig durcheinander gebracht. ( Ich hatte wider vergessen wie man dise dinger handhabt)
wenn man den konstrukter der Scrollpane aufruft, dann übergibt man das objekt, andem sie nacher angebracht sein soll. Das bedeutet:
Java:
public class ScrollPaneDemo {
    JPanel panel;
    JScrollPane jSP;
    BufferedImage img;

    public ScrollPaneDemo() {
        this.img = new BufferedImage();
        this.panel = new JPanel();
      
        this.jSP = new JScrollPane(new JLabel(img)); // bzw. add img
        this.panel.add(jSP);
        this.add(panel);
    }
}
 
Zuletzt bearbeitet:
Wir haben es jetzt nochmal auf eine andere Art und Weise probiert, leider wird aber das Bild nicht angezeigt. Weiß jemand Rat?

Java:
package berechnung;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;

public class HilfeFensterScroll extends JFrame {
    public HilfeFensterScroll() {
    super("Hilfe");
    ImageIcon ii = new ImageIcon("HilfeFensterBild.jpg");
    JScrollPane jsp = new JScrollPane(new JLabel(ii));
    getContentPane().add(jsp);
    setSize(600    , 400);
    setVisible(true);
  }

  }
 
Zum ersten Versuch:
Ihr habt die JScrollPane so konfiguriert, dass die Scrollbars nur bei Bedarf angezeigt werden, d. h. nur dann wenn die View größer ist als die JScrollPane. Gleichzeitig hatte die JScrollPane aber keine View. Deswegen gab es auch keine Scrollbars. Ausserdem habt ihr die paint-methode vom JFrame überschrieben, d. h. egal was sich auf/in dem JFrame befunden hätte, es wäre eh nicht gezeichnet worden.
Zum letzten Versuch:
Der Ansatz funktioniert bei mir. Wenn das Bild nicht erscheint, sehe ich zwei Möglichkeiten:
1. Das Bild wird nicht korrekt geladen (falscher Pfad, falsche Endung, wasauchimmer).
2. Ihr habt die HilfeFensterScroll-Klasse nicht komplett gepostet und ev. immer noch die überschriebene paint-Methode drin.
Eine genauere Ursachenforschung ist von hier aus aber nicht möglich.
 

Neue Themen


Zurück
Oben