JScrollPane bei GridBagLayout


  • default user
  • 1042 Aufrufe 7 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • JScrollPane bei GridBagLayout

    Hallo,

    Habe ein Problem mit ScrollPanes, und zwar kriege ich es nicht hin, einer JTextArea eine JScrollPane zuzuweisen, wenn das Ganze unter dem GridBagLayout gemacht wird.
    Ich habe mal ein kleines Programm dazu geschrieben, dass nur die gewünschten Komponenten zeigt, hier der Quellcode:
    Java pastebin - collaborative debugging tool

    Hier das Ergebnis:



    Ihr seht, die JScrollPane steht als eigene Komponente darin, als sei sie unabhängig von der JTextArea. Wenn ich in die TextArea dann Text eingebe, der die vorgesehenen Anzahlen an Zeilen und Zeichen erreicht, bläht sie sich auf ohne dass ich die scrollpanes nutzen kann.

    Wie kann ich die JScrollPanes so verwenden, dass sie auch mit der JTextArea zu verwenden sind?

    Danke im Voraus.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von default user () aus folgendem Grund: Frage beantwortet

  • Okay, wenn ich was schreibe wie

    Quellcode

    1. JScrollPane scrollPane = new JScrollPane( ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS );
    2. JTextArea textArea = new JTextArea( 20, 24 );
    3. scrollPane.add( textArea );


    Bleibt das Problem.
    Könnte das Problem darin liegen, dass ich das GUI komplett anders aufbauen müsste? Theoretisch läuft diese Methode ja nur ein mal komplett durch und landet dann wieder bei main(), und unter meiner main() steht auch nur der Methodenaufruf doGui(). Kann es ein, dass das GUI nicht mehr wirklich aktiv ist, sondern nur noch dargestellt wird?
    Ich habe wirklich noch nicht besonders lange mit Swing bzw. GUI's generell zu tun.
  • Also es ist richtig man added dem scroll pane die text area.

    Ich sehe 2 mögliche Probleme.
    1. du hast was mit dem GridbagLayout verkackt, das geht imho sehr leicht.
    2. Das scroll pane ist ja viel größer als die Textarea, eigentlich sollte das von der Idee her eher andersrum sein. Und die Scrollbars würd ich zu entwicklungszwecken mal auf as needed umstellen.
    3. Wird der Fehler nicht in den 3 Zeilen stecken sondern wo anders, also wärs natürlich immer hilfreich den kompletten source zu haben.
    4. Deine Theorien sind eher falsch mit der idee das die gui nicht mehr aktiv ist :)
  • stelzi schrieb:

    1. du hast was mit dem GridbagLayout verkackt, das geht imho sehr leicht.

    Joa, wie gesagt, der erste komplexere LayoutManager den ich verwende.

    2. Das scroll pane ist ja viel größer als die Textarea, eigentlich sollte das von der Idee her eher andersrum sein. Und die Scrollbars würd ich zu entwicklungszwecken mal auf as needed umstellen.

    Habe mal die TextArea größer als die ScrollBar gestellt, mit dem Ergebnis, dass die ScrollBar garnicht mehr dargestellt wird, auch wenn zu viel Text drin steckt.

    3. Wird der Fehler nicht in den 3 Zeilen stecken sondern wo anders, also wärs natürlich immer hilfreich den kompletten source zu haben.

    Meinst du meine vorige Antwort mit den 3 Zeilen? Ich habe doch hier den kompletten SourceCode: Java pastebin - collaborative debugging tool
    Das enthält die ganze Klasse mit der Methode doGui(). Das ist so gedacht, dass in main() dann doGui() aufgerufen wird. Also fehlt nur die main-klasse, die kann zB so aussehen:

    Quellcode

    1. public class TestApp
    2. {
    3. public static void main( String[] args )
    4. {
    5. gui.doGui();
    6. }
    7. }

    Das ist das komplette Programm, habe es extra für dieses Problem geschrieben.

    4. Deine Theorien sind eher falsch mit der idee das die gui nicht mehr aktiv ist :)

    Also kann das prinzipiell funktionieren wenn ich einfach von main() aus eine Methode aufrufe, die dann das komplette GUI behandelt, ganz ohne Threads etc. ?
  • zu 2.
    Gut ich muss zu geben soviel mach ich nicht mehr mit guis. Und wenn doch dann macht das der gui designer ;)
    zu 3.
    Sorry ich hatte den link nicht gesehen. Ich hab jetzt mal ne Änderung vorgenommen. Jetzt sollte es funktionieren.
    zu 4.
    Da laufen schon paar Threads, auch wenn du selbst keinen manuell erstellt hast :)

    ps.:
    Klassen beginnen in der Regel immer mit einem großen Buchstaben ;)