JTextArea hat keinen Rahmen

Feras

Aktives Mitglied
Hi, ich übe zur Zeit die GUI Programmierung an selbst ausgedachten Aufgaben...

Nun habe ich im folgenden Code das Problem, dass mein JTextArea (Zeile 19 und 92) keinen Rahmen angezeigt bekommt und keinen Zeilenumbruch anm rechten Rand das Programms macht. Wenn ich ein JTextField verwende wird jedoch ein Rahmen angezeigt. Wie kann ich diese beiden Probleme lösen?


MfG Feras

Java:
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class GUI extends Frame {

	private JTextField benutzerNameText;
	private JTextArea BeschreibungText;
	private JTextField ProduktmengeText;

	public GUI() {
		setTitle("Lager");
		setVisible(true);
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent evt) {
				System.exit(0);
			}
		});
		zeigeAnmeldeGUI();
	}

	private void zeigeAnmeldeGUI() {

		GridBagLayout gbl_contentPane = new GridBagLayout();
		gbl_contentPane.columnWeights = new double[] { 0.0, 1.0,
				Double.MIN_VALUE };
		gbl_contentPane.rowWeights = new double[] { 1.0, 0.0, 0.0, 0.0,
				Double.MIN_VALUE };
		setLayout(gbl_contentPane);

		JLabel lblTitel = new JLabel("<html>Lagerverwaltungssystem</html>");
		lblTitel.setPreferredSize(new Dimension(260, 40));
		GridBagConstraints gbc_lblTitel = new GridBagConstraints();
		gbc_lblTitel.gridwidth = 2;
		gbc_lblTitel.fill = GridBagConstraints.HORIZONTAL;
		gbc_lblTitel.insets = new Insets(0, 5, 5, 0);
		gbc_lblTitel.gridx = 0;
		gbc_lblTitel.gridy = 0;
		add(lblTitel, gbc_lblTitel);

		JLabel lblProduktname = new JLabel("Produktname:");
		lblProduktname.setLabelFor(benutzerNameText);
		GridBagConstraints gbc_lblProduktname = new GridBagConstraints();
		gbc_lblProduktname.insets = new Insets(20, 5, 5, 5);
		gbc_lblProduktname.anchor = GridBagConstraints.WEST;
		gbc_lblProduktname.gridx = 0;
		gbc_lblProduktname.gridy = 1;
		add(lblProduktname, gbc_lblProduktname);

		benutzerNameText = new JTextField();
		benutzerNameText.setColumns(20);
		GridBagConstraints gbc_txtName = new GridBagConstraints();
		gbc_txtName.insets = new Insets(20, 0, 5, 5);
		gbc_txtName.fill = GridBagConstraints.HORIZONTAL;
		gbc_txtName.gridx = 1;
		gbc_txtName.gridy = 1;
		// gbc_txtName.weightx = 0.0;
		// gbc_txtName.gridwidth = 0;
		// gbc_txtName.ipady = 40;
		add(benutzerNameText, gbc_txtName);
		benutzerNameText.setColumns(10);

		ProduktmengeText = new JTextField();
		ProduktmengeText.setColumns(20);
		GridBagConstraints gbc_ProduktmengeText = new GridBagConstraints();
		gbc_ProduktmengeText.insets = new Insets(0, 0, 5, 5);
		gbc_ProduktmengeText.fill = GridBagConstraints.HORIZONTAL;
		gbc_ProduktmengeText.gridx = 1;
		gbc_ProduktmengeText.gridy = 2;
		add(ProduktmengeText, gbc_ProduktmengeText);

		JLabel lblProduktmenge = new JLabel("Produktmenge:");
		lblProduktmenge.setLabelFor(ProduktmengeText);
		GridBagConstraints gbc_lblProduktmenge = new GridBagConstraints();
		gbc_lblProduktmenge.insets = new Insets(0, 5, 5, 5);
		gbc_lblProduktmenge.anchor = GridBagConstraints.WEST;
		gbc_lblProduktmenge.gridx = 0;
		gbc_lblProduktmenge.gridy = 2;
		add(lblProduktmenge, gbc_lblProduktmenge);

		BeschreibungText = new JTextArea();
		BeschreibungText.setColumns(20);
		GridBagConstraints gbc_BeschreibungText = new GridBagConstraints();
		gbc_BeschreibungText.insets = new Insets(0, 0, 5, 5);
		gbc_BeschreibungText.fill = GridBagConstraints.HORIZONTAL;
		gbc_BeschreibungText.gridx = 1;
		gbc_BeschreibungText.gridy = 3;
		gbc_BeschreibungText.ipady = 40;
		add(BeschreibungText, gbc_BeschreibungText);

		JLabel lblProduktbeschreibung = new JLabel("Beschreibung:");
		lblProduktbeschreibung.setLabelFor(BeschreibungText);
		GridBagConstraints gbc_lblProduktbeschreibung = new GridBagConstraints();
		gbc_lblProduktbeschreibung.insets = new Insets(0, 5, 5, 5);
		gbc_lblProduktbeschreibung.anchor = GridBagConstraints.WEST;
		gbc_lblProduktbeschreibung.gridx = 0;
		gbc_lblProduktbeschreibung.gridy = 3;
		add(lblProduktbeschreibung, gbc_lblProduktbeschreibung);

		JPanel panel = new JPanel();
		panel.setLayout(new FlowLayout(FlowLayout.TRAILING, 0, 0));
		GridBagConstraints gbc_panel = new GridBagConstraints();
		gbc_panel.gridwidth = 2;
		gbc_panel.insets = new Insets(0, 0, 5, 5);
		gbc_panel.fill = GridBagConstraints.BOTH;
		gbc_panel.gridx = 0;
		gbc_panel.gridy = 4;
		add(panel, gbc_panel);

		JButton anmeldenButton = new JButton("Produkt hinzufügen");
		panel.add(anmeldenButton);

		JButton btnAbbrechen = new JButton("Abbrechen");
		btnAbbrechen.addActionListener(e -> cancel());
		panel.add(btnAbbrechen);

		pack();
		setLocationRelativeTo(null);

		/**
		 * anmeldenButton.addActionListener(new ActionListener() { public void
		 * actionPerformed(ActionEvent e) { boolean erfolg = new
		 * Nutzerverwaltung().anmelden( benutzerNameText.getText(),
		 * passwortText.getText()); if (erfolg) { setLayout(new GridLayout(1,
		 * 1)); setTitle("Lehvis - angemeldeter Nutzer " +
		 * Nutzerverwaltung.getAngemeldeterNutzer() .getVorname() + " " +
		 * Nutzerverwaltung.getAngemeldeterNutzer() .getName()); removeAll();
		 * add(new UebungsverwaltungGUI(LehvisGUI.this)); validate(); } else {
		 * Meldung fenster = new Meldung("Falsche Eingabe!");
		 * benutzerNameText.setText(""); passwortText.setText(""); } validate();
		 * } });
		 * 
		 * validate();
		 **/
	}

	private void cancel() {
		dispose();
	}

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

}
 
hi,
das mit dem Zeilenumbruch ist nicht voreingestellt, ich weiß auch nicht, ob das so ohne weiteres geht. Normalerweise würde ich hier ein JScrollPane drumpacken, dann ist mir damit auch nie aufgefallen, dass eine JTextArea übergangslos ohne Rahmen zu anderen Elementen Wäre.
javampir
 
Ich habe jetzt ein JScrollPane hinzugefügt und den Code wie folgend geändert. Doch das JScrollPane wird auch nicht angezeigt. Warum?

Java:
		BeschreibungText = new JTextArea(5, 20);
		JScrollPane scrollPane = new JScrollPane(BeschreibungText,
				ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
				ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		GridBagConstraints gbc_BeschreibungText = new GridBagConstraints();
		gbc_BeschreibungText.insets = new Insets(0, 0, 5, 5);
		gbc_BeschreibungText.fill = GridBagConstraints.HORIZONTAL;
		gbc_BeschreibungText.gridx = 1;
		gbc_BeschreibungText.gridy = 3;
		// gbc_BeschreibungText.ipady = 40;
		add(BeschreibungText, gbc_BeschreibungText);
 
Immernoch das gleiche Resultat. Es lässt einfach nichts mit sich machen, selbst wenn ich ein neues Panel erstelle und es darüber adde, bleibt der Effekt das selbe...
 
Ab Zeile 77 gehts los

Java:
public class MainGUI extends Frame {

	private JTextField benutzerNameText;
	private JTextArea BeschreibungText;
	private JTextField ProduktmengeText;

	public MainGUI() {
		setTitle("Lager");
		setVisible(true);
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent evt) {
				System.exit(0);
			}
		});
		zeigeAnmeldeGUI();
	}

	private void zeigeAnmeldeGUI() {

		GridBagLayout gbl_contentPane = new GridBagLayout();
		gbl_contentPane.columnWeights = new double[] { 0.0, 1.0,
				Double.MIN_VALUE };
		gbl_contentPane.rowWeights = new double[] { 1.0, 0.0, 0.0, 0.0,
				Double.MIN_VALUE };
		setLayout(gbl_contentPane);

		JLabel lblTitel = new JLabel("<html>Lagerverwaltungssystem</html>");
		lblTitel.setPreferredSize(new Dimension(260, 40));
		GridBagConstraints gbc_lblTitel = new GridBagConstraints();
		gbc_lblTitel.gridwidth = 2;
		gbc_lblTitel.fill = GridBagConstraints.HORIZONTAL;
		gbc_lblTitel.insets = new Insets(0, 5, 5, 0);
		gbc_lblTitel.gridx = 0;
		gbc_lblTitel.gridy = 0;
		add(lblTitel, gbc_lblTitel);

		JLabel lblProduktname = new JLabel("Produktname:");
		lblProduktname.setLabelFor(benutzerNameText);
		GridBagConstraints gbc_lblProduktname = new GridBagConstraints();
		gbc_lblProduktname.insets = new Insets(20, 5, 5, 5);
		gbc_lblProduktname.anchor = GridBagConstraints.WEST;
		gbc_lblProduktname.gridx = 0;
		gbc_lblProduktname.gridy = 1;
		add(lblProduktname, gbc_lblProduktname);

		benutzerNameText = new JTextField();
		benutzerNameText.setColumns(20);
		GridBagConstraints gbc_txtName = new GridBagConstraints();
		gbc_txtName.insets = new Insets(20, 0, 5, 5);
		gbc_txtName.fill = GridBagConstraints.HORIZONTAL;
		gbc_txtName.gridx = 1;
		gbc_txtName.gridy = 1;
		// gbc_txtName.weightx = 0.0;
		// gbc_txtName.gridwidth = 0;
		// gbc_txtName.ipady = 40;
		add(benutzerNameText, gbc_txtName);
		benutzerNameText.setColumns(10);

		ProduktmengeText = new JTextField();
		ProduktmengeText.setColumns(20);
		GridBagConstraints gbc_ProduktmengeText = new GridBagConstraints();
		gbc_ProduktmengeText.insets = new Insets(0, 0, 5, 5);
		gbc_ProduktmengeText.fill = GridBagConstraints.HORIZONTAL;
		gbc_ProduktmengeText.gridx = 1;
		gbc_ProduktmengeText.gridy = 2;
		add(ProduktmengeText, gbc_ProduktmengeText);

		JLabel lblProduktmenge = new JLabel("Produktmenge:");
		lblProduktmenge.setLabelFor(ProduktmengeText);
		GridBagConstraints gbc_lblProduktmenge = new GridBagConstraints();
		gbc_lblProduktmenge.insets = new Insets(0, 5, 5, 5);
		gbc_lblProduktmenge.anchor = GridBagConstraints.WEST;
		gbc_lblProduktmenge.gridx = 0;
		gbc_lblProduktmenge.gridy = 2;
		add(lblProduktmenge, gbc_lblProduktmenge);

		BeschreibungText = new JTextArea(5, 20);
		JScrollPane scrollPane = new JScrollPane(BeschreibungText,
				ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
				ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
		GridBagConstraints gbc_BeschreibungText = new GridBagConstraints();
		gbc_BeschreibungText.insets = new Insets(0, 0, 5, 5);
		gbc_BeschreibungText.fill = GridBagConstraints.HORIZONTAL;
		gbc_BeschreibungText.gridx = 1;
		gbc_BeschreibungText.gridy = 3;
		// gbc_BeschreibungText.ipady = 40;
		add(scrollPane, gbc_BeschreibungText);

		JLabel lblProduktbeschreibung = new JLabel("Beschreibung:");
		lblProduktbeschreibung.setLabelFor(BeschreibungText);
		GridBagConstraints gbc_lblProduktbeschreibung = new GridBagConstraints();
		gbc_lblProduktbeschreibung.insets = new Insets(0, 5, 5, 5);
		gbc_lblProduktbeschreibung.anchor = GridBagConstraints.WEST;
		gbc_lblProduktbeschreibung.gridx = 0;
		gbc_lblProduktbeschreibung.gridy = 3;
		add(lblProduktbeschreibung, gbc_lblProduktbeschreibung);

		JPanel panel = new JPanel();
		panel.setLayout(new FlowLayout(FlowLayout.TRAILING, 0, 0));
		GridBagConstraints gbc_panel = new GridBagConstraints();
		gbc_panel.gridwidth = 2;
		gbc_panel.insets = new Insets(0, 0, 5, 5);
		gbc_panel.fill = GridBagConstraints.BOTH;
		gbc_panel.gridx = 0;
		gbc_panel.gridy = 4;
		add(panel, gbc_panel);

		JButton anmeldenButton = new JButton("Produkt hinzufügen");
		panel.add(anmeldenButton);

		JButton btnAbbrechen = new JButton("Abbrechen");
		btnAbbrechen.addActionListener(e -> cancel());
		panel.add(btnAbbrechen);

		pack();
		setLocationRelativeTo(null);

		/**
		 * anmeldenButton.addActionListener(new ActionListener() { public void
		 * actionPerformed(ActionEvent e) { boolean erfolg = new
		 * Nutzerverwaltung().anmelden( benutzerNameText.getText(),
		 * passwortText.getText()); if (erfolg) { setLayout(new GridLayout(1,
		 * 1)); setTitle("Lehvis - angemeldeter Nutzer " +
		 * Nutzerverwaltung.getAngemeldeterNutzer() .getVorname() + " " +
		 * Nutzerverwaltung.getAngemeldeterNutzer() .getName()); removeAll();
		 * add(new UebungsverwaltungGUI(LehvisGUI.this)); validate(); } else {
		 * Meldung fenster = new Meldung("Falsche Eingabe!");
		 * benutzerNameText.setText(""); passwortText.setText(""); } validate();
		 * } });
		 * 
		 * validate();
		 **/
	}

	private void cancel() {
		dispose();
	}

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

}
 
So ich habe den einfachen Fehler gefunden...In der main habe ich eine andere GUI aufgerufen. Dies habe ich nun korrigiert und dein Tipp, dass ich das ScrollPane adden muss, funktioniert jetzt auch. Immer wieder erstaunlich, was ein so kleiner Fehler anrichten kann.
 
Also bei mir gehts... Allerdings habe ichs auf extends JFrame geändert nicht auf Frame. Das setvisible würde ich auch hinter das pack() setzen. Auf jeden Fall sieht es so ok für mich aus, ScrollPane wird angezeigt.
Edit: Ok dann hätte ich es mir sparen können;-)
 
Zuletzt bearbeitet:

Zurück
Oben