JTextArea soll die größe im Jframe (Panel) anpassen

Das Problem ist im Titel genannt :D.

Mit freundlichem Gruß,
MrSmile07

nein. für mich ist nicht klar, wessen Größe geändert werden soll.

bye
TT

Die JTextarea soll sich der Größe des Jframes unterwerfen :D. Also wenn ich den JFrame kleiner mache das sich die JTextarea kleiner macht und den Text in die nächste Zeile quetscht.

Mit freundlichem Gruß,
MrSmile07

Gut jetzt haben wir die Anforderung, wissen aber immer noch nicht worin das Problem liegt.
Grundsätzlich wird die Größe der Komponenten durch LayoutManager geregelt.

man könnte auch in die API schauen, wie man automatische Zeilenumbrüche aktivert…

bye
TT

Der bei mir das Boxlayout benutzt. Hier der Beispiel Code:

import java.awt.Window;

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


public class Writer 
{
	
	public static void main(String[] args)
	{
		new Writer().run(); 
	}
	
	
	private void run()
	{
		JFrame frame = new JFrame();
        frame.setTitle("~SongWriter~");
        BoxLayout boxLayout = new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS); // top to bottom
        frame.setSize(500, 600);
        JPanel panel = new JPanel();
        frame.setLayout(boxLayout);
        frame.setResizable(true);
        
        //zeiliges und spaltiges Textfeld wird erzeugt
        JTextArea textfeld = new JTextArea();//<------------Das in den Klammern stehende ist mein Problem
 
        //Vorgefertigter Text
        textfeld.setText("Hallo");
        
        //Zeilenumbruch wird eingeschaltet
        textfeld.setLineWrap(true);
 
        //Zeilenumbrüche erfolgen nur nach ganzen Wörtern
        textfeld.setWrapStyleWord(true);
 
        //Ein JScrollPane, der das Textfeld beinhaltet, wird erzeugt
        JScrollPane scrollpane = new JScrollPane();       
 
        //textfeld zum scrollpane hinzufügen
        scrollpane.add(textfeld);
        
        //Scrollpane wird unserem Panel hinzugefügt
        panel.add(scrollpane);
 
        

        frame.add(panel);
        frame.setVisible(true);
	}

}

Mit freundlichem Gruß,
MrSmile07

In dem Code besteht ja das Problem, dass Dein Panel ein FlowLayout enthält und die JScrollPane somit schon mal „minimalst“ dargestellt wird :wink:

Wenn beim kleiner ziehen der Text umgebrochen werden soll, dann muss die horizontale Scrollbar der JScrollPane deaktiviert werden.

[QUOTE=_Michael;29804]In dem Code besteht ja das Problem, dass Dein Panel ein FlowLayout enthält und die JScrollPane somit schon mal „minimalst“ dargestellt wird :wink:
.[/QUOTE]

Aber ich seh nicht das ich das FLOW-Layout hinzugefügt habe sondern nur das BOX-Layout.

Mit freundlichem Gruß,
MrSmile07

[QUOTE=MrSmile07]Aber ich seh nicht das ich das FLOW-Layout hinzugefügt habe sondern nur das BOX-Layout.

Mit freundlichem Gruß,
MrSmile07[/QUOTE]Du übergibst das BoxLayout dem Frame. Für das Panel setzt du kein Layout. Ich nehme mal an, dass das Panel als default das FlowLayout nutzt.

Ich habe es mit panel.setLayout(boxLayout); probiert aber erfolglos.

Mit freundlichem Gruß,
MrSmile07

Schade…

Für Dein Bsp ist das JPanel gar nicht notwendig. Lasse es doch einfach mal weg.

Doch fürs scrollpane aber wofür braucht man denn sonst das JPanel ???.

Mit freundlichem Gruß,
MrSmile07

In Deinem Beispiel könntest Du die JScrollPane auch direkt im JFrame platzieren.

Im letzten Post habe ich die Ironie Tags vergessen: Anhand Deiner Aussage “habe es … probiert aber erfolglos” kann man nur Vermutungen anstellen, woran es liegt. Ich war aber nie sonderlich Fan von Jeopardy!

JTextArea in den CENTER-Bereich des JFrame (hat als Standard das BorderLayout), dann nimmt die JTextArea immer den komplett verfügbaren Platz ein.

Hab deinen Code mal umgeschrieben, ich hoffe, so hast du dir das vorgstellt.

import javax.swing.*;


public class Writer
{

    public static void main(String[] args)
    {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
            		new Writer();
            	}
        });
    }

    public Writer()
    {
        JFrame frame = new JFrame("~SongWriter~");
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        JPanel panel = new JPanel(new BorderLayout());

        //zeiliges und spaltiges Textfeld wird erzeugt
        JTextArea textfeld = new JTextArea();
        textfeld.setPreferredSize(new Dimension(500, 600));

        //Vorgefertigter Text
        textfeld.setText("Hallo");

        //Zeilenumbruch wird eingeschaltet
        textfeld.setLineWrap(true);

        //Zeilenumbrüche erfolgen nur nach ganzen Wörtern
        textfeld.setWrapStyleWord(true);

        //Scrollpane wird unserem Panel hinzugefügt
        panel.add(new JScrollPane(textfeld));

        frame.add(panel);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}```

Hallo Entschuldigung, ich hatte die letzten Tage viel zu planen und dannach hatte ich schon komplett neu angefangen und jetzt klappt es. Bedanke mich aber trotzdem für den Code. Sorry.

Da dies gelöst ist setze ich es auf “gelöst”.

Mit freundlichem Gruß,
MrSmile07