JTextArea will nicht so wie ich will

turndevil

Mitglied
Hi Leute. Ich bins wieder mal =)

Das Problem haben sicher schon mehrere gehabt. Ich weiss aber nicht mal nach was ich suchen soll.

Ich will eine kleine GUI programmieren...nichts schwieriges hab ich mir gedacht.
Sie sollte wie im Anhang aussehen, nur soll die TextArea bis nach ganz unten gehen. Ich habe es mit verschiedenen Layouts und Alignment- bzw Grösseneinstellungen versucht aber ich bekomme es nicht hin. Ich habe folgenden Code:

Code:
public class GuiClass extends JFrame implements ActionListener {

	Container c = getContentPane();
	JLabel sucheL = new JLabel("Suchtext eingeben: ");
	JTextField sucheTF =
		new JTextField("                                           ");
	JButton sucheB = new JButton("Suche starten...");
	JTextArea resultTA = new JTextArea();
	JTextArea output = new JTextArea();

	public GuiClass() {
//Einstellungen von der TextArea
		output.setLineWrap(true);
		output.setSize(480, 280);
		output.setAlignmentX(10);
		output.setAlignmentY(110);
		JScrollPane ausgabeSP = new JScrollPane(output);

//Einstellungen des TextFeldes		
		sucheTF.setSize(125, 40);

//alle "add"'s usw
		c.setLayout(new FlowLayout());
		c.add(sucheL);
		c.add(sucheTF);
		sucheB.addActionListener(this);
		c.add(sucheB);
		c.add(ausgabeSP);

	}

Sollte ich vielleicht doch ein anderes Layout benutzen? Ich habe es bereits ohne Layout (null) versucht aber auch wenn ich alle Alignmenteinstellungen richtig setze kam nur das obere heraus. Wo pack ich das Problem an?

Danke für etwaige Hilfe. =)

mfg
tom
 

Anhänge

  • example.jpg
    example.jpg
    19,2 KB · Aufrufe: 146
Original geschrieben von turndevil
Hi Leute. Ich bins wieder mal =)

Das Problem haben sicher schon mehrere gehabt. Ich weiss aber nicht mal nach was ich suchen soll.

Ich will eine kleine GUI programmieren...nichts schwieriges hab ich mir gedacht.
Sie sollte wie im Anhang aussehen, nur soll die TextArea bis nach ganz unten gehen. Ich habe es mit verschiedenen Layouts und Alignment- bzw Grösseneinstellungen versucht aber ich bekomme es nicht hin.

Sollte ich vielleicht doch ein anderes Layout benutzen? Ich habe es bereits ohne Layout (null) versucht aber auch wenn ich alle Alignmenteinstellungen richtig setze kam nur das obere heraus. Wo pack ich das Problem an?

Danke für etwaige Hilfe. =)

mfg
tom

Verwende das BorderLayout und setz die ScrollPane auf CENTER.
 
Soll ich das ScrollPane in ein eigenes JPanel setzen und das dann CENTER ausrichten?

also so:

JPanel1 mit Label, JTextField und JButton
JPanel1 mit BorderLayout.NORTH einsetzen

JPanel2 mit JTextArea
JPanel2 mit BordeLayout.CENTER einsetzen


mfg
tom

edit: Ich habs so probiert und so gehts auch. Nur mit der Einschränkung, dass die TextArea nicht genau in der Mitte sondern ein wenig nach links veschoben ist.
 
Zuletzt bearbeitet:
Original geschrieben von turndevil
Soll ich das ScrollPane in ein eigenes JPanel setzen und das dann CENTER ausrichten?

also so:

JPanel1 mit Label, JTextField und JButton
JPanel1 mit BorderLayout.NORTH einsetzen

JPanel2 mit JTextArea
JPanel2 mit BordeLayout.CENTER einsetzen


mfg
tom

Jo, genau so. Also z.B.

Code:
getContentPane().setLayout( new BorderLayout() );
getContentPane().add(panel2, BorderLayout.CENTER);
 
Oh wollt ich eigentlich noch posten. *NARF*

Folgenden Code hab ich jetzt:

Code:
public class GuiClass extends JFrame implements ActionListener {

	Container c = getContentPane();
	JPanel eingabe = new JPanel();
	JPanel ausgabe = new JPanel(new BorderLayout());
	JLabel sucheL = new JLabel("Suchtext eingeben: ");
	JTextField sucheTF = new JTextField("                                                            ");
	JButton sucheB = new JButton("Suche starten...");
	JTextArea output = new JTextArea();

	public GuiClass() {
//Einstellungen von der TextArea
		output.setLineWrap(true);
		output.setSize(500, 250);
		JScrollPane ausgabeSP = new JScrollPane(output);
		ausgabe.add(BorderLayout.CENTER, ausgabeSP);

//Einstellungen des TextFeldes		
		sucheTF.setSize(125, 40);
		eingabe.add(sucheL);
		eingabe.add(sucheTF);
		eingabe.add(sucheB);
		sucheB.addActionListener(this);

//alle "add"'s usw
		c.setLayout(new BorderLayout());
		c.add(BorderLayout.CENTER, ausgabe);
		c.add(BorderLayout.NORTH, eingabe);

	}

Das ergibt dann unteres Fenster. Kann ich die TextArea dann noch um ein paar Pixel verschieben oder veweigert mir das der Layout Manager?
 

Anhänge

  • example.jpg
    example.jpg
    20,8 KB · Aufrufe: 126
Original geschrieben von turndevil
Oh wollt ich eigentlich noch posten. *NARF*

Das ergibt dann unteres Fenster. Kann ich die TextArea dann noch um ein paar Pixel verschieben oder veweigert mir das der Layout Manager?

BorderLayout kann das nicht, Du müsstest z.B. GridagLayout nehmen und dort die Insets einstellen.
Allerdings verstehe ich nicht, warum das Fenster bei Dir so aussieht, vom Code her sieht das richtig aus. Zumindest von dem Code den ich hier sehe.
 
GUImässig habe ich auch sonst keinen Code mehr in meinem Projekt. Nur in meiner Mainklasse hab ich noch setTitle(), setSize() (vom ganzen Frame), setVisible() und setDefaultCloseOperation.

Is ja auch kien Stress...nurn kleines Programmierprojekt fürs 2te Semester =) Das mit den paar Pixeln wär quasi unter "Perfektionismus" einzuordnen.

Danke nochmal für die ganzen Tipps. Du solltest dich Snipe nennen, weil du mir immer genau das geraten hast was ich gebraucht hab. =)


mfg
tom

p.s.: Hab schon noch einige Frage zu dem Projekt aber die stell ich dann besser im allgemeinen Java-Forum.
 

Neue Beiträge

Zurück