tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
839
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von darkmagic2002
    darkmagic2002 darkmagic2002 ist offline Mitglied Bronze
    Registriert seit
    Jan 2009
    Beiträge
    33
    Heyhey,
    für die Nutzungsbedingungen brauche ich einen Text, darunter ein Kontrollkästchen, das erst aktiviert werden kann, wenn man den Text ganz heruntergescrollt hat:
    Ich habe ein(e)
    • JCheckBox-Objekt
    • JEditorPane auf einer JScrollPane

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    JEditorPane jep = new JEditorPane("<html>dies ist ein HTML-Text</html>");
    JScrollPane sp = new JScrollPane(jep);
    //Kontrollkästchen
     
    //dem Viewport des JScrollPane-Objekts ChangeListener hinzufügen
     
    //wird aufgerufen beim Scrollen
    public void stateChanged(ChangeEvent e)
    {
        if (sp.getViewport().getViewPosition().y >=
                    sp.getHeight())
        {
            //Kontrollkästchen aktivieren
        }
    }

    Jedoch gibt
    Code java:
    1
    
    sp.getHeight()
    nicht die maximale Größe zurück sondern irgendeinen meist kleineren Wert. Dass bewirkt hier, dass das CheckBox-Objekt zu früh aktiviert wird.

    Mögliche Lösungen:
    • Ich teste die Maximalposition mit
      Code java:
      1
      
      sp.getViewport().getViewPosition().y
      wenn ich ganz heruntergescrollt habe und übernehme das ins Programm als festen Wert, den muss ich allerdings bei Änderungen und für jede Sprache neu angeben, da sich die Textlänge geringfügig ändert.
    • Ich lasse zur Laufzeit den Scrollbalken ganz nach unten setzen, dann den Wert erfragen und ihn dann wieder ganz nach oben setzen; ich weiß allerdings nicht, wie das geht.

    Hatte jemand das Problem schon einmal oder weiß jemand eine Lösung oder einen Vorschlag.
    Für jede Hilfe wäre ich dankbar. Denn der erstgenannte Lösungsvorschlag ist ziemlich umständlich.

    MfG,
    kevin
     

  2. #2
    Avatar von HonniCilest
    HonniCilest HonniCilest ist offline Mitglied Platin
    Registriert seit
    Jun 2009
    Ort
    Java Insel
    Beiträge
    501
    Hallo,

    ich habe vor kurzer Zeit ein ähnliches Problem gelöst.
    Abhilfe schafft der AdjustmentListener.
    Dieser AdjustmentListener wird dem Vertikalen Scrollbalken vom JScrollPane zugeordnet.

    Code :
    1
    
    scrollpane.getVerticalScrollBar() //Referenz auf den Vertikalen Scrollbalken

    Die Methode für den Listener:
    Code :
    1
    2
    3
    
    public void adjustmentValueChanged(AdjustmentEvent ae) {
         //TODO: was soll passieren? *
    }

    * In deinem Fall brauchst du: (siehe http://java.sun.com/j2se/1.4.2/docs/...ScrollBar.html)
    Code :
    1
    2
    3
    
    getMaximum() //Länge des Scrollbalkens
    getValue() //Momentane Position (glaube von der Oberkante des Schiebers)
    getVisibleAmount() //(glaube das ist die Länge des Schiebers)

    getValue() in unterster Position ergibt mit getVisibleAmount() zusammen getMaximum().

    Du kannst es dann einfach mittels if() abfragen und dort den Status von deiner Checkbox ändern.
    Geändert von HonniCilest (23.06.09 um 15:43 Uhr)
     

  3. #3
    Avatar von darkmagic2002
    darkmagic2002 darkmagic2002 ist offline Mitglied Bronze
    Registriert seit
    Jan 2009
    Beiträge
    33
    Hallo noch einmal,
    haha! Jetzt darf ich eine fröhliche Botschaft überbringen: Es klappt auf Anhieb!!
    Vielen Dank! Besser hätte die Antwort nicht sein können..
    Lg,
    kevin
     

Ähnliche Themen

  1. CSS-Höhenangabe je nach Viewport-Höhe anpassen?
    Von josDesign im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 08.10.08, 07:26
  2. Antworten: 0
    Letzter Beitrag: 17.09.08, 09:57
  3. JScrollPane mit JPanel als ViewPort -> setPreferredSize
    Von ToMeFox im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 12.05.06, 13:20
  4. Antworten: 0
    Letzter Beitrag: 10.05.06, 09:10
  5. JLabel oder JPane in JScrollpane.viewport zentrieren
    Von Zhoragh im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 28.02.05, 18:55

Stichworte