JTextArea mit JScrollPane

Status
Nicht offen für weitere Antworten.

7123

Aktives Mitglied
Hi, ich habe auf ein JFrame ein JPanel aufgesetzt und würde auf diesem JPanel nun gerne ein srollbares JTextArea draufsetzten (das absolut nach Pixel positioniert wird), jedoch werden immer 2 JTextAreas erzeugt, wie kann ich das andere wegbekommen bzw. was mache ich falsch, hier mal ein auszug aus dem Code
Java:
JTextArea a = new JTextArea("Test"); 
a.setBounds(20,20,20,20); 
JScrollPane scroll = new JScrollPane(a); 
scroll.setBounds(20,20,20,20); 
add(scroll); // geschrieben in der Methode paintComponent einer Klasse die von JPanel erbt
Ich hoffe ihr könnt mir weiterhelfen 🙂
 
wenn beide Componenten die selben Bounds haben, woran erkennst du dann das es zwei sind?

Ansonsten: Niemals in paintComponent was anderes als malen machen. Niemals
 
Danke für die schnelle Hilfe, das man in paintComponent nur zeichnen darf wuste ich nicht. Zu der anderen "Frage" es sind/(waren) zwei, da eine Komponente (JTextArea + JScrollPane) an der Position 20,20 mit den Maßen 20,20 und die andere genau zentriert (vermute ich) am oberen Rand des JPanel angezeigt wird, also wahrscheinlich zeichnet dann paint Component automatisch bei dem Konstrukuraufruf das Text Feld (ist aber auch nur eine Vermutung 🙂)
 
Nur als Hinweis: Wenn du etwas in ein JScrollPane steckst, brauchst du die Position nicht bestimmen:

Java:
JTextArea ta = new JTextArea();
JScrollPane scroll = new JScrollPane(ta);
scroll.setBounds(20,20,20,20); 
add(scroll);

Das setBounds() beim JTextArea wird dann ignoriert. Ansonsten kann ich mich meinem Vorredner nur anschliessen ...
 
Hm, irgendwie komme ich mit dem JTextArea nicht zurecht, ich habe nun die JTextArea erzeugt und möchte dort bestimmt Strings einfügen, wenn ich
Java:
JTextArea a = new JTextArea();
a.append("abc test 1234 usw...");
eingeben funktioniert das auch, also der Text wird angezeigt, wenn ich jedoch folgende Schleife habe:
Java:
//d ist eine ArrayList<String>
for(String k: d){
a.append(k);
System.out.println(k);
}
so wird in dem JTextArea nur der 1. String Wert (der ArrayList) angzeigt (Array List ist größer als 1 Element). Die Probeausgabe auf der Konsole (2. Zeile) zeigt mir jedoch alle Werte korrekt an (Zeilenumbruch habe ich bei dem JTextArea aktiviert und alle anderen Ausgaben klappen auch, nur halt diese Schleife nicht. Woran könnte das liegen?

@StifMB: Danke für den Tipp 🙂
 
Also auf Anhieb würde ich nur folgendes versuchen:

Java:
StringBuffer sb = new StringBuffer();
for(String k: d){
    sb.append(k);
}
JTextArea a = new JTextArea();
a.setText(sb.toString());
 
Hat leider auch nichts gebracht, ist schon ziemlich merkwürdig, weil wie gesagt auf der Konsole stimmt es ja...
 
also Textumbruch hatte ich eigentlich mittels setLineWrap(true) aktiviert, wenn ich einen längeren Text außerhalb dieser Schleife eingebe funktioniert das auch
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben