[Java] JScrollPane funktioniert mit TextArea nicht wie erwartet

Dieses Thema: "[Java] JScrollPane funktioniert mit TextArea nicht wie erwartet" im Forum "Java/Mono/dotGNU" wurde erstellt von daboss, 17.08.2009.

  1. #1 daboss, 17.08.2009
    Zuletzt bearbeitet: 17.08.2009
    daboss

    daboss Keine Macht für niemand!

    Dabei seit:
    05.01.2007
    Beiträge:
    1.294
    Zustimmungen:
    0
    Ort:
    sydney.australia.world
    Heyho,

    ich wollte in Java eine kleine GUI erstellen. Darin soll sich auch ein JTabbedPane befinden. Die einzelnen Reiter/Tabs sind JScrollPanes, weil ich vorher nicht weiss, wie viel Inhalt da rein kommt. In das JScrollPane kommt dann das JPanel mit dem eigentlichen Inhalt. Enthält das JPanel jetzt mehr Inhalt, wie dargestellt werden kann, dann kann ich scrollen. Aber wenn ich Checkboxen und TextAreas hinzufüge, werden die von unten nach oben über das komplette Fenster gezogen, nicht nur über den Reiter. (Siehe Screenshot) JLabels und JTextFields verschwieden, wie ich's erwarte. Kann bitte jemand nen Tipp geben, was ich falsch mache, und wie's funktioniert? Danke schonmal.

    Auszüge aus dem Code geb ich noch mit dazu. Hier erstelle ich das JTabbedPane und füge es später zum JFrame hinzu. (Das JFrame hat ein BorderLayout, das Pane kommt in die Mitte.) Ich hoffe, das ist einigermassen vollständig, ich hab's auf's wesentliche zusammenkürzen wollen:

    Code:
    JTabbedPane jtpQuestions;
    JPanel jpTab;
    JPanel jpTabContent;
    JScrollPane jspTabContent;
    
    GridLayout jpLayout = new GridLayout(1, 1);
    jpLayout.setVgap(0);
    jpLayout.setHgap(0);
    jpTab.setLayout(jpLayout);
    			
    GridBagLayout gbl  = new GridBagLayout();
    
    for(/* lies, was ins Panel soll */){
    	jpTab = new JPanel();
    	jpTabContent = new JPanel();
    	jspTabContent = new JScrollPane();
    	jpLayout = new GridLayout(1, 1);
    	jpLayout.setVgap(10);
    	jpLayout.setHgap(10);
    	jpTab.setLayout(jpLayout);
    	
    	jpTabContent.setLayout(gbl);
    	
    	if(/* Textarea soll rein */){
    		JLabel jl = new JLabel(f.getINr() + ". " + f.getSInhalt());
    		jl.setName(String.valueOf(f.getINr()));
    		jl.setHorizontalAlignment(SwingConstants.RIGHT);
    
    		gbl.setConstraints(jl, this.getGridBagConstraints(0, y++, 1, 1, 0, 0));
    		jpTabContent.add(jl);
    
    		TextArea ta = new TextArea();
    		gbl.setConstraints(ta, this.getGridBagConstraints(1,
    								y++, 2, 1, 1.0, 0));
    
    		jpTabContent.add(ta);
    	} else if(/* Checkbox soll rein */){
    		Checkbox chk = new Checkbox();
    		chk.setLabel(c.getSInhalt());
    		chk.setName(String.valueOf(c.getINr()));
    
    		gbl.setConstraints(chk, this.getGridBagConstraints(
    										1, y++, 2, 1, 1.0, 0));
    		jpTabContent.add(chk);
    	} //...
    	
    	jspTabContent.setViewportView(jpTabContent);
    	jpTab.add(jspTabContent);
    	jtpQuestions.addTab(sBereich, jpTab);
    	
    }
    
    vatc.setJtpQuestions(jtpQuestions);
    
    Hier noch die Funktion getGridBagConstraints:
    Code:
    private GridBagConstraints getGridBagConstraints(int x, int y, int width,
    			int height, double weightx, double weighty) {
    
    		GridBagConstraints gbc = new GridBagConstraints();
    		gbc.fill = GridBagConstraints.BOTH;
    		gbc.gridx = x;
    		gbc.gridy = y;
    		gbc.gridwidth = width;
    		gbc.gridheight = height;
    		gbc.weightx = weightx;
    		gbc.weighty = weighty;
    		return gbc;
    	}
    
     

    Anhänge:

  2. Anzeige

    schau mal hier --> (hier klicken). Viele Antworten inkl. passender Shell-Befehle!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. juan_

    juan_ König

    Dabei seit:
    22.01.2004
    Beiträge:
    976
    Zustimmungen:
    0
    Ort:
    Berlin
    ohne dein Problem jetzt richtig verstanden zu haben.
    Versuchs doch mal ohne Layoutmanager!

    Dann musst du zwar das Fester statisch machen (also setRezisable = false, oder so), aber du bist wesentlich flexibler in der Gestaltung. Außerdem kann ein Objekt (bei einem Layoutmanager) afaik nur 3 weitere Objekte enthalten.

    Ciao
     
  4. daboss

    daboss Keine Macht für niemand!

    Dabei seit:
    05.01.2007
    Beiträge:
    1.294
    Zustimmungen:
    0
    Ort:
    sydney.australia.world
    Hey,

    naja, vom Nulllayout bin ich nicht so wirlich überzeugt, bisher ;) Aber ich hab meinen Fehler eben selber gefunden: JTextArea (in einem eigenen JScrollPane und festgelegter Zeilenzahl) und JCheckBox / JRadioButton, und schon schaut's so aus, wie ich's eigentlich erwartet habe. Kommt davon, wenn man sich zusätzlich zu dunkelstem Halbwissen auf Eclispe-Automatismem verlässt...

    (Um's ursprüngliche Problem zu verdeutlichen, hab ich die "richtige" Optik nochmal angehängt... Jetzt bleiben beim Scrollen die Checkboxen/Radiobuttons/Textareas im TabbedPane und scrollen nicht mehr übers komplette Fenster)

    Trotzdem Danke für deine Antwort :)
     

    Anhänge:

  5. #4 der_Kay, 31.01.2010
    Zuletzt bearbeitet: 31.01.2010
    der_Kay

    der_Kay Doppel-As

    Dabei seit:
    28.02.2006
    Beiträge:
    140
    Zustimmungen:
    0
    Auf die Gefahr hin, dass das etwas pauschal daher kommt: Ich hatte bei einem Java-GUI- Projekt mit wechselnden Panel-Inhalten genau das gleiche massive Rumgenerve mit sich streckenden, nicht zentrierten Komponenten, etc.

    Ich habe schließlich alles bestens mit dem NetBeans-Editor zusammenklicken können. Sparte viel zeit und Nerven... :-)
     
Thema:

[Java] JScrollPane funktioniert mit TextArea nicht wie erwartet

Die Seite wird geladen...

[Java] JScrollPane funktioniert mit TextArea nicht wie erwartet - Ähnliche Themen

  1. [JAVA] Netbeans wird nicht richtig dargestellt

    [JAVA] Netbeans wird nicht richtig dargestellt: Hi Folks, habe ein Problem mit Netbeans auf meinem privaten Laptop. Ich nutze Sidux und hatte mir von der HP von Netbeans den Installscript...
  2. [Java] Parameterübergabe: 2 * 5 wird zu 2 d 5?

    [Java] Parameterübergabe: 2 * 5 wird zu 2 d 5?: Heyho, ich wollte eben so einen kleinen billigen Taschenrechner in Java implementieren (und bissl mit RMI und so spielen). Dabei ist eine...
  3. [java]sql Statement bearbeiten

    [java]sql Statement bearbeiten: Hallo beisammen, Ich habe ein kleines Problem bei der Datenbankabfrage. Gegeben sei ein Programm mit Textfeldern, Checkboxen und Comboboxen...
  4. [Java] Datei downloaden?

    [Java] Datei downloaden?: Huhu, ich bastel mir grad ein kleines Programm, das die Daten in nem Ordner mit denen von ner liste ausm internet vergleicht und fehlende items...
  5. [JAVA] CSV Datei parsen

    [JAVA] CSV Datei parsen: Hey Folks! Ok dachte eigentlich das ware ein Standardproblem, welches ich innerhalb von 2min googlen selbst loesen koennte. Doch nach nun fast...