JTextArea mit JScrollPane

Lybrial

Bekanntes Mitglied
Hi Leute....

habe ein Problem das mich jetzt schon recht lange ärgert...
Und zwar habe ich ein JScrollPane, dem ich eine JTextArea übergeben habe. Ich hätte
gerne das diese TextArea 400, 100 groß ist, doch wenn ich die TextArea mit
setPreferredSize(new Dimension(400, 100)); setze, wird die TextArea zwar größer, jedoch
erscheint dann einfach so eine Horizontale Scrollbar, die ich nicht haben möchte....außerdem
werden mir nicht mehr alle Werte angezeigt in diesem Fenster, nur so viele, wie in ein 400, 100
Fenster passen obwohl ich eine vertikale Scrollleiste habe.

Mal zum Code:
Java:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

@SuppressWarnings("serial")
public class UI extends JFrame{
	CalcTemp calcTemp = new CalcTemp();
	JPanel panel = new JPanel();
	JPanel panel1 = new JPanel();
	JFormattedTextField textField1 = new JFormattedTextField();
	JFormattedTextField textField2 = new JFormattedTextField();
	JFormattedTextField textField3 = new JFormattedTextField();
	JFormattedTextField textField4 = new JFormattedTextField();
	JFormattedTextField textField5 = new JFormattedTextField();
	JTextArea textArea = new JTextArea();
	JButton button = new JButton("Endtemperatur berechnen");
	//*****Konstruktor***********************
	public UI(){
		this("Erhitzen eines Wassereimers");
	}
	//*****Konstruktor***********************
	public UI(String aString){
		super(aString);
	}
	//*********************************************************************
	public void mainWindow(){
		UI frame = new UI("Erhitzen eines Wassereimers");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setPreferredSize(new Dimension(400, 450));
		frame.addComponentsToPane(frame.getContentPane());
		frame.setResizable(true);
		frame.pack();
        frame.setVisible(true); 
	}
	//*********************************************************************
	public JPanel panel(){
		panel.setLayout(new GridLayout(5, 2));
		panel.add(new Label("Umgebungstemperatur in °C"));
		panel.add(textField1());
		panel.add(new Label("Anfangstemperatur in °C"));
		panel.add(textField2());
		panel.add(new Label("Anzahl Heizperioden"));
		panel.add(textField3());
		panel.add(new Label("Kohle in kg"));
		panel.add(textField4());
		panel.add(new Label("Endtemperatur in °C"));
		panel.add(textField5());
		return panel;
	}
	//*********************************************************************
	public JPanel panel1(){
		panel1.setLayout(new BorderLayout());
		panel1.add(new Label("Temperaturverlauf"), BorderLayout.NORTH);
		panel1.add(new JScrollPane(textArea()), BorderLayout.CENTER);
		panel1.add(button(), BorderLayout.SOUTH);
		return panel1;
	}
	//*********************************************************************
	public JTextField textField1(){
		textField1.addKeyListener(new KeyListener(){
			public void keyTyped(KeyEvent e){}
			public void keyPressed(KeyEvent e){}
			public void keyReleased(KeyEvent e){
				try{
					calcTemp.setRoundTemperatur(Double.parseDouble(textField1.getText()));
				}catch(NumberFormatException v){
					
				}
			}
		});
		return textField1;
	}
	//*********************************************************************
	public JTextField textField2(){
		textField2.addKeyListener(new KeyListener(){
			public void keyTyped(KeyEvent e){}
			public void keyPressed(KeyEvent e){}
			public void keyReleased(KeyEvent e){
				try{
					calcTemp.setStartTemperatur(Double.parseDouble(textField2.getText()));
				}catch(NumberFormatException v){
					
				}
			}
		});
		return textField2;
	}
	//*********************************************************************
	public JTextField textField3(){
		textField3.addKeyListener(new KeyListener(){
			public void keyTyped(KeyEvent e){}
			public void keyPressed(KeyEvent e){}
			public void keyReleased(KeyEvent e){
				try{
					calcTemp.setAmountHeatPeriods(Double.parseDouble(textField3.getText()));
				}catch(NumberFormatException v){
					
				}
			}
		});
		return textField3;
	}
	//*********************************************************************
	public JTextField textField4(){
		textField4.addKeyListener(new KeyListener(){
			public void keyTyped(KeyEvent e){}
			public void keyPressed(KeyEvent e){}
			public void keyReleased(KeyEvent e){
				try{
					calcTemp.setCole(Double.parseDouble(textField4.getText()));
				}catch(NumberFormatException v){
					
				}				
			}
		});
		return textField4;
	}
	//*********************************************************************
	public JTextField textField5(){
		textField5.setEditable(false);
		return textField5;
	}
	//*********************************************************************
	public JTextArea textArea(){
		textArea.setEditable(false);
		return textArea;
	}
	//*********************************************************************
	public JButton button(){
		button.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent actionEvent){
				textField5.setValue(calcTemp.calcEndTemperatur());
				textArea().setText("Periode" + "\t" + "°C" + "\n");
				for(int i = 0; i < calcTemp.getAmountHeatPeriods(); i++){
					textArea().append(i+1 + "\t" + calcTemp.getAllTemperaturPerPeriode()[i] + "\n");
				}
		    }
		});
		button.setPreferredSize(new Dimension(400, 100));
		return button;
	}
	//*********************************************************************
	public void addComponentsToPane(Container pane){
		pane.add(panel(), BorderLayout.NORTH);
		pane.add(panel1(), BorderLayout.SOUTH);
	}
	//*********************************************************************
}

Hier ein Screen, wie es nicht aussehen soll, aber nach dem setzen der Dimension aussieht:



wie ihr hier auch sehen könnt, werden nur 5 Perioden angezeigt, 10 müssten es aber sein....
wenn ich die Dimension nicht setze, ist die Horizontale leiste weg und alle 10 Werte werden angezeigt,
so wie ich es haben will, dann ist mir das Fenster aber zu klein.....
 

Michael...

Top Contributor
wie ihr hier auch sehen könnt, werden nur 5 Perioden angezeigt, 10 müssten es aber sein....
wenn ich die Dimension nicht setze, ist die Horizontale leiste weg und alle 10 Werte werden angezeigt,
so wie ich es haben will, dann ist mir das Fenster aber zu klein.....
Wirklich verstanden, was Du willst bzw. nicht willst habe ich nicht, aber wenn Dir das Fenster zu klein ist mach es doch einfach größer.
 

Marco13

Top Contributor
Irgendwie ist das GUI insgesamt ziemlich kaputt - mainWindow erstellt ein neues Objekt, muss aber schon auf einem aufgerufen werden (sollte wohl static sein?), dieses "addComponentsToPane" sieht seltsam aus, also bei mir zeigt er hier ziemlichen Mist an...
Wie auch immer: Hast du schon versucht, der TextArea im Konstruktor die gewünschen Zeilen/Spaltenzahl mitzugeben (anstatt irgendein willkürlich-unfundiertes PreferredSize zu setzen) ?
 

Lybrial

Bekanntes Mitglied
Ok, ich habs jetzt hinbekommen, es war aber mehr Zufall....
Es gibt da etwas was ich absolut nicht verstehe, vielleicht kanns
mir ja einer erklären:

Java:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class UI{
	private CalcTemp calcTemp = new CalcTemp();
	private JFrame frame = new JFrame();
	private JPanel panel = new JPanel();
	private JPanel panel1 = new JPanel();
	private JFormattedTextField textField1 = new JFormattedTextField();
	private JFormattedTextField textField2 = new JFormattedTextField();
	private JFormattedTextField textField3 = new JFormattedTextField();
	private JFormattedTextField textField4 = new JFormattedTextField();
	private JFormattedTextField textField5 = new JFormattedTextField();
	private JTextArea textArea = new JTextArea();
	private JButton button = new JButton("Endtemperatur berechnen");
	//*****Konstruktor***********************
	public UI(){}
	//*********************************************************************
	public void mainWindow(){
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setPreferredSize(new Dimension(400, 450));
		frame.setResizable(false);
		frame.add(panel(), BorderLayout.NORTH);
		frame.add(panel1(), BorderLayout.SOUTH);
		frame.pack();
        frame.setVisible(true); 
    }
	//*********************************************************************
	public JPanel panel(){
		panel.setLayout(new GridLayout(5, 2));
		panel.add(new Label("Umgebungstemperatur in °C"));
		panel.add(textField1());
		panel.add(new Label("Anfangstemperatur in °C"));
		panel.add(textField2());
		panel.add(new Label("Anzahl Heizperioden"));
		panel.add(textField3());
		panel.add(new Label("Kohle in kg"));
		panel.add(textField4());
		panel.add(new Label("Endtemperatur in °C"));
		panel.add(textField5());
		return panel;
	}
	//*********************************************************************
	public JPanel panel1(){
		panel1.setLayout(new GridLayout(3, 1));
		panel1.add(new Label("Temperaturverlauf"));
		panel1.add(new JScrollPane(textArea()));
		panel1.add(button());
		return panel1;
	}
	//*********************************************************************
	public JTextField textField1(){
		textField1.addKeyListener(new KeyListener(){
			public void keyTyped(KeyEvent e){}
			public void keyPressed(KeyEvent e){}
			public void keyReleased(KeyEvent e){
				try{
					calcTemp.setRoundTemperatur(Double.parseDouble(textField1.getText()));
				}catch(NumberFormatException v){
					
				}
			}
		});
		return textField1;
	}
	//*********************************************************************
	public JTextField textField2(){
		textField2.addKeyListener(new KeyListener(){
			public void keyTyped(KeyEvent e){}
			public void keyPressed(KeyEvent e){}
			public void keyReleased(KeyEvent e){
				try{
					calcTemp.setStartTemperatur(Double.parseDouble(textField2.getText()));
				}catch(NumberFormatException v){
					
				}
			}
		});
		return textField2;
	}
	//*********************************************************************
	public JTextField textField3(){
		textField3.addKeyListener(new KeyListener(){
			public void keyTyped(KeyEvent e){}
			public void keyPressed(KeyEvent e){}
			public void keyReleased(KeyEvent e){
				try{
					calcTemp.setAmountHeatPeriods(Double.parseDouble(textField3.getText()));
				}catch(NumberFormatException v){
					
				}
			}
		});
		return textField3;
	}
	//*********************************************************************
	public JTextField textField4(){
		textField4.addKeyListener(new KeyListener(){
			public void keyTyped(KeyEvent e){}
			public void keyPressed(KeyEvent e){}
			public void keyReleased(KeyEvent e){
				try{
					calcTemp.setCole(Double.parseDouble(textField4.getText()));
				}catch(NumberFormatException v){
					
				}				
			}
		});
		return textField4;
	}
	//*********************************************************************
	public JTextField textField5(){
		textField5.setEditable(false);
		return textField5;
	}
	//*********************************************************************
	public JTextArea textArea(){
		textArea.setEditable(false);
		return textArea;
	}
	//*********************************************************************
	public JButton button(){
		button.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent actionEvent){
				textField5.setValue(calcTemp.calcEndTemperatur());
				textArea().setText("Periode" + "\t" + "°C" + "\n");
				for(int i = 0; i < calcTemp.getAmountHeatPeriods(); i++){
					textArea().append(i+1 + "\t" + calcTemp.getAllTemperaturPerPeriode()[i] + "\n");
				}
		    }
		});
		button.setPreferredSize(new Dimension(400, 100));
		return button;
	}
	//*********************************************************************
}

Siehe die Methode JButton button()
Hier habe ich button.setPrefferedSize(new Dimension(400, 100)); angewendet.
Funktioniert bei dem Button wunderbar und komischerweise (oder auch nicht) wirkt
sich das auf meine JTextArea aus. Und zwar wird diese TextArea dann genau so wie ich sie
haben möchte. Genau die Größe, und nur die Scrollleiste die ich auch haben möchte und mir
wird alles in dieser TextArea angezeigt was ich angezeigt haben möchte.
Wenn ich bei meiner TextArea setPrefferedSize(new Dimension(400, 100)); anwende,
wird es nicht so wie ich es möchte.

Woran liegt das?
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Sag' mal schreibst du den Code selbst oder ist der automatisch generiert? ???:L
Ersetz' mal die ganzen Labels durch JLabels...
 

Lybrial

Bekanntes Mitglied
Und zwar weshalb?
Und in wie fern hilft das bei meiner Frage weiter? ;)

Wenn der Code schlecht ist, hilft es mir nicht weiter, wenn du mir
"nur" sagst dass er schlecht ist. Ein Wieso und Warum wäre
hilfreich, einfach etwas in den Raum stellen kann jeder ;)
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Ja, das war (im Zweifelsfall wegen der Uhrzeit :oops: ) etwas knapp, aber die Antwort wurde ja jetzt gepostet. Trotzdem steht die Frage noch. Für ein KSKB wären die ganzen Listener ja nicht nötig und so...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P JTextarea (in JScrollPane) zeigt nur die beiden letzten Einträge an? AWT, Swing, JavaFX & SWT 0
E wie in JScrollPane auf JTextArea zugreifen AWT, Swing, JavaFX & SWT 12
G JTextArea mit JScrollPane wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
M Swing JScrollPane (Parent JTextArea) aktualisieren + neue Zeile AWT, Swing, JavaFX & SWT 5
C JLabel, JTextArea, JScrollPane. repaint(); ? AWT, Swing, JavaFX & SWT 6
N Swing JTextArea/JScrollpane: JScrollbar position AWT, Swing, JavaFX & SWT 8
w0ddes Swing JTextArea auf JScrollPane - Autoscroll?! AWT, Swing, JavaFX & SWT 2
C Breite JTextArea/JScrollPane setzen AWT, Swing, JavaFX & SWT 4
7 JTextArea mit JScrollPane AWT, Swing, JavaFX & SWT 8
N Mehrere JTextArea in einem JPanel und eine JScrollPane AWT, Swing, JavaFX & SWT 3
L JTextArea in JScrollPane verkleinert sich nicht mehr AWT, Swing, JavaFX & SWT 8
Tom299 JScrollPane(JTextArea) Scrollbar soll am Anfang stehen AWT, Swing, JavaFX & SWT 2
D JTextArea mit einer JScrollPane AWT, Swing, JavaFX & SWT 2
vogella JScrollPane und JTextArea AWT, Swing, JavaFX & SWT 6
B JTextArea und JScrollPane und DocumentListener AWT, Swing, JavaFX & SWT 2
C sorry aber JScrollPane mit JTextArea AWT, Swing, JavaFX & SWT 4
M JTextArea in JScrollPane, Problem mit Thread.sleep() AWT, Swing, JavaFX & SWT 5
S JTextarea in JScrollpane -> scroll, Zeilenbeschränkung AWT, Swing, JavaFX & SWT 2
S Größe von jPanel bzw. jTextArea (in jScrollpane) anpassen AWT, Swing, JavaFX & SWT 1
G JTextArea + JScrollPane + JTabbedPane AWT, Swing, JavaFX & SWT 8
B JTextArea in GridBagLayout mit JScrollPane AWT, Swing, JavaFX & SWT 5
B JTextArea, JScrollPane und Java 1.5 AWT, Swing, JavaFX & SWT 4
D Alle Inhalte einer JTextArea in einem JScrollPane löschen AWT, Swing, JavaFX & SWT 2
B JTextArea mit GridBagLayout und JScrollPane. AWT, Swing, JavaFX & SWT 4
Z JTextArea in JScrollPane automatisch scrollen AWT, Swing, JavaFX & SWT 2
C JScrollPane und JTextArea AWT, Swing, JavaFX & SWT 3
T Swing Mehrere Ausgaben in JTextArea AWT, Swing, JavaFX & SWT 2
B JPanel-Inhalte inkl. JTextarea zoomen? AWT, Swing, JavaFX & SWT 3
RedEagle Swing JTextArea ist leer AWT, Swing, JavaFX & SWT 13
E Warum wird Text im JTextArea erst am Programmende angezeigt ? AWT, Swing, JavaFX & SWT 1
K Swing 2 JTextArea parrallel scrollable AWT, Swing, JavaFX & SWT 16
Hatsi09 JTextArea Inhalt verlinken AWT, Swing, JavaFX & SWT 4
ralfb1105 jTextArea Scrollbar hinzufügen - mit Jigloo erstellt AWT, Swing, JavaFX & SWT 7
S Ausgabe in JTextArea AWT, Swing, JavaFX & SWT 13
H JTextArea - farbige Zeilen .. bitte um Vorschläge zur Implementierung AWT, Swing, JavaFX & SWT 1
F 2D-Grafik JTextArea drucken bringt mieses Ergebnis AWT, Swing, JavaFX & SWT 2
Mario1409 Swing JTextArea scroll Problem AWT, Swing, JavaFX & SWT 0
Bluedaishi JTextArea gefundene Zeile nach Oben Scrollen AWT, Swing, JavaFX & SWT 13
S JTextArea Text nach oben wandern lassen AWT, Swing, JavaFX & SWT 7
Bluedaishi JtextArea AWT, Swing, JavaFX & SWT 6
V JScrollBar soll weiterscrollen, wenn Inhalt von JTextArea erweitert wird AWT, Swing, JavaFX & SWT 7
Bluedaishi JDialog modal und JTextArea AWT, Swing, JavaFX & SWT 4
F JTextarea Steuern ~ consolenanbindung AWT, Swing, JavaFX & SWT 5
F Event Handling JTextArea auf bestimmte Eingabe reagieren (Return-Taste) AWT, Swing, JavaFX & SWT 2
F JTextArea hat keinen Rahmen AWT, Swing, JavaFX & SWT 10
N JTextArea Events weiterleiten AWT, Swing, JavaFX & SWT 3
R JTextArea mit verschiedenen Textfarben AWT, Swing, JavaFX & SWT 6
M JTextArea wird nicht aktualisiert (ActionListener-Problem) AWT, Swing, JavaFX & SWT 1
HoloYoitsu jTextArea.setCaretPosition(); What am I doing wrong? AWT, Swing, JavaFX & SWT 0
S Zeilenumbruch jTextArea mit toString AWT, Swing, JavaFX & SWT 2
F Swing String[] in JTextArea ausgeben. Jeder Eintrag in neue Zeile, aber ohne "\n"- Geht das? AWT, Swing, JavaFX & SWT 3
M JTextArea - Leertaste "sperren" AWT, Swing, JavaFX & SWT 1
S Inhalt der Java-Konsole in die JTextArea AWT, Swing, JavaFX & SWT 3
M Swing JTextArea mit ScrollBar AWT, Swing, JavaFX & SWT 9
S Swing Zahl der Zeilenumbrüche in einer JTextArea bestimmen AWT, Swing, JavaFX & SWT 1
F Swing Caret in JTextArea vergrößern AWT, Swing, JavaFX & SWT 2
D JTextArea auf KeyListener Command AWT, Swing, JavaFX & SWT 6
N JFrame änliches wie JTextArea? AWT, Swing, JavaFX & SWT 2
A Swing JTextArea - Multi-Line-Editing AWT, Swing, JavaFX & SWT 2
A Swing JTextArea aus anderer Klasse in realtime aktualisieren AWT, Swing, JavaFX & SWT 3
O JTextArea befüllen AWT, Swing, JavaFX & SWT 2
G JTextArea on the fly aus anderem Programm befüllen AWT, Swing, JavaFX & SWT 4
A Swing Einrücken mehrerer Zeilen per Tab in einem JTextPane/JTextArea AWT, Swing, JavaFX & SWT 3
T Swing Ausgabe aus ArrayList in Klasse1 in jTextArea in Klasse2 AWT, Swing, JavaFX & SWT 2
B JTextArea Größe an Container anpassen AWT, Swing, JavaFX & SWT 2
B Drucken der JTextArea AWT, Swing, JavaFX & SWT 4
M JTextArea Zeile hinzufügen AWT, Swing, JavaFX & SWT 4
C JTextArea scrollt bei append(String) aus Threads nicht ans Ende AWT, Swing, JavaFX & SWT 7
P JPanel- Listener durch JTextArea aktivieren AWT, Swing, JavaFX & SWT 8
A JTextArea - Zeichenbegrenzung nach .txt Datei import AWT, Swing, JavaFX & SWT 6
Hoppelmann Swing Tasten in JTextArea blockieren AWT, Swing, JavaFX & SWT 2
S JTextArea Tastaturanschläge AWT, Swing, JavaFX & SWT 2
E Swing JTextArea in JFrame, wie nun WindowFocusListener implementieren? AWT, Swing, JavaFX & SWT 2
S Problem mit JButton und JTextArea AWT, Swing, JavaFX & SWT 2
J Swing Mitwachsende JTextArea+ JPanel AWT, Swing, JavaFX & SWT 4
P Swing JtextArea füllen mit setText AWT, Swing, JavaFX & SWT 7
M Probleme mit der Selektion einer JTextArea AWT, Swing, JavaFX & SWT 3
T Die Größe einer JTextArea an Ihren Parent JPanel anpassen. AWT, Swing, JavaFX & SWT 5
hdi Swing ListCellRenderer + JTextArea + LineWrap AWT, Swing, JavaFX & SWT 6
T ComponentOrientation in JTextArea AWT, Swing, JavaFX & SWT 3
H Hintergrundbild in jTextArea AWT, Swing, JavaFX & SWT 4
G Swing JTextArea mit fester Anzahl Spalten! AWT, Swing, JavaFX & SWT 10
G ein JTextArea in zwei JPanels AWT, Swing, JavaFX & SWT 2
padde479 Swing replace JTextArea funktioniert nicht AWT, Swing, JavaFX & SWT 2
L Zeilenumbrüche aus JTextArea MIT in Textdatei schreiben AWT, Swing, JavaFX & SWT 4
_dp jTextArea/jTextPanel Auto Höhe AWT, Swing, JavaFX & SWT 5
Ollek JTextArea - Feste Zeilenanzahl(8 Zeilen) AWT, Swing, JavaFX & SWT 3
S Swing JTextArea während der Laufzeit füllen AWT, Swing, JavaFX & SWT 5
Ollek Text in JTextField und JTextArea zur Laufzeit ändern AWT, Swing, JavaFX & SWT 6
P Datenelement anderer Klasse in JTextArea ausgeben AWT, Swing, JavaFX & SWT 4
P Scrollbar JTextArea AWT, Swing, JavaFX & SWT 23
M Swing Ausgabe in JTextArea verzögern AWT, Swing, JavaFX & SWT 7
T Swing jTextArea soll sich der Fenstergröße anpassen beim ziehen?? AWT, Swing, JavaFX & SWT 2
S System.out in JTextArea AWT, Swing, JavaFX & SWT 4
S Swing JTextArea - Bild auf/ab Tasten implementieren AWT, Swing, JavaFX & SWT 4
J JTextArea verschwindet bei resize vom JFrame AWT, Swing, JavaFX & SWT 2
VfL_Freak "setAccelerator/KeyStroke" bei JTextArea ? AWT, Swing, JavaFX & SWT 6
P Swing JTextArea - beim neuzeichnen bleibt manchmal weißer Kasten AWT, Swing, JavaFX & SWT 10
Dit_ JTextArea zu Zeile X scrollen AWT, Swing, JavaFX & SWT 4
H variable Höhe einer JTextArea (als Renderer/Editor) als Zelle einer JTable AWT, Swing, JavaFX & SWT 9

Ähnliche Java Themen

Neue Themen


Oben