scrollpane taucht nicht auf

teslar

Aktives Mitglied
Hallo
Ich habe das Problem, dass in meinem Programm zwar die Textarea, aber nicht die Scrollpane auftaucht.
hab schon einiges versucht, weis aber nicht mehr weiter.
Java:
        jTextArea1 = new javax.swing.JTextArea();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1.setColumns(10);
        jTextArea1.setEditable(true);
        jTextArea1.setRows(5);
        jScrollPane1.setViewportView(jTextArea1);
        jTextArea1.setText(" ");
        jTextArea1.setBounds(30, 400, 140, 150);
        jPanel1.add(jTextArea1);
        jPanel1.add(jScrollPane1);
Nur hier wird auf die Objekte eingegangen, also (glaube ich) muss der Fehler hier sein.

-Es wird im jPanel1 das Null-Layout. Ich weis man soll es nicht benutzen, aber ich mach es trotzdem!

Ich bitte euch um Vorschläge, wie es funktioniert, und danke schon mal im Vorraus.
 
Es gibt kein Null-Layout. Den Layoutmanager auf null zu setzen bedeutet nur mehr Arbeit für dich.
Java:
JPanel panel=new JPanel();
jTextArea1 = new javax.swing.JTextArea();
jScrollPane1 = new javax.swing.JScrollPane(jTextArea1);
panel.add(jScrollPane1);
 
mmh....
Jetzt taucht nicht mal mehr die TextArea auf.

Und ich benutze null beim layout, da ich die Komponenten genau setzen möchte, die Grundstruktur des Programms ist nen borderlayout.
 
sry das schaffe ich heute Abend nicht mehr und morgen gehts erstmal in Urlaub, werd es machen wenn ich dieser da bin.

edit: danke schonmal für die bisherige hilfe
 
Also hier mal folgender Code:
Ich denke das ist was du suchst!

Kurz noch ne Erläuterung:
Du hast deine setBounds(...) auf deine JTextArea angewandt, die wiederum in deiner JScollPane ist...
Du solltest die setBounds(...) aber auf die JScrollPane anwenden, da diese Komponente ja auf dein JPanel kommt und positioniert wird.

Schau dir das kurze Beispiel unten an oder probier es aus! 🙂

Java:
package snippet;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

// Klasse erbt von JFrame
public class Snippet extends JFrame {

	public Snippet() {
		setLayout(new BorderLayout());
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(new Dimension(700, 700));
		setLocationRelativeTo(null);
		
		initGui();
		setVisible(true);
	}

	public void initGui() {
		// Erzeugen eines JPanels
		JPanel jPanel1 = new JPanel();
		jPanel1.setLayout(null);
		
		// Erzeugen der JTextArea
		JTextArea jTextArea1 = new JTextArea();
		jTextArea1.setColumns(10);
		jTextArea1.setRows(5);
		jTextArea1.setEditable(true);
		jTextArea1
				.setText("Hier \nsteht \njetzt \nein \nlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaannnnnnnnnnnnnnnnnnger \nText \nmit \nAbsätzen \ndrin!");
		jTextArea1.setSize(200, 100);

		// Erzeugen der JScrollPane und hinzufügen der obigen JTextArea zum
		// Viewport der JScollPane
		JScrollPane jScrollPane1 = new JScrollPane();
		jScrollPane1.setViewportView(jTextArea1);
		jScrollPane1.setBounds(30, 400, 140, 150);
		
		// Hinzufügen der JScrollPane zum JPanel
		jPanel1.add(jScrollPane1);

		// Hinzufügen des JPanel zum JFrame
		add(jPanel1);
	}

	public static void main(String[] args) {
		new Snippet();
	}
}


Und noch ein Tipp:
Wie beretis erwähnt...
Versuche deine Komponenten lieber mit Hilfe der LayoutManager zu positionieren.
Es mag mühsam sein diese Layoutmanager in gemeinsamer Kombination zu nutzen, aber es ist am Ende deutlich einfacher. Ausserdem berechnen die Layoutmanager auch bei Fenstergrößenmanipulation durch den Anwender auch gleich wie sich die Komponenten beim Resize verhalten sollen, bzw. wie ihre neue Position angepsst werden muss.

Am effektivsten dürfte das GridBagLayout sein, aber es ist mit Abstand der am kompliziert zu erlernende. Aber es lohnt sich.

Hoffe, dass ich dir helfen konnte.

Viele Grüße
 
Danke,
aufgrund von ein paar Problemen musste ich mein jdk deinstallieren, und muss da noch was warten, hab aber noch iwo ne 6uXX rumliegen, aber das Problem hatte ich auch schon vor 7^^. Werde es also bald probieren.

Danke für den Tipp, ich weis auch das ein LayoutManager Hilfreich ist. Nur da ich eh die Fenstergröße fest habe und sich die Panels teilweise ein bisschen bewegen werd ich wohl hier bei meinem Script bleiben...

edit: Es funktioniert, danke nochmal.
 
Zuletzt bearbeitet:

Zurück
Oben