Swing: mehrere Layouts verwenden

Status
Nicht offen für weitere Antworten.

snoop83

Mitglied
Hallo!

Bin absoluter Java-Newbie .. 🙁 ..hab vorher nur mit C (++) und Pascal programmiert. Leider gefällt mir die Oberflächenprogrammierung mit Java überhaupt nicht, aber ich bin z.Z. dazu gezwungen, eine solche zu implementieren.

Habe mich schon dank div. Beispiele eingearbeitet.

Ich machs kurz: Meine Frage: Ist es möglich ein erstelltes Gridlayout nochmals zu unterteilen?

Falls ja, wie? Kurzes BSP?

Hintergrund: Ich brauche ein Gridlayout (1,2) und das rechte muss dann nochmal ein Gridlayout (1,5) unterteilt werden.

brauche dringend Hilfe..
 
hab ein wenig rumexperimentiert .. es hat geklappt, ich weiß aber nicht, ob das so erlaubt ist oder ob es nur Zufall war:

Code:
  panel1  = new JPanel(new GridLayout(1,2)); // 2 Spalten
  panel2  = new JPanel(new GridLayout(3,1)); // 3 Zeilen
  
  button1 = new JButton("Button1");
  button2 = new JButton("Button2");
  button3 = new JButton("Button3");
  button4 = new JButton("Button4");
  button5 = new JButton("Button5");  
  
  panel1.add(button1);
  panel1.add(panel2);   // rechte Spalte -> 3 zeilen
  
  panel2.add(button2);
  panel2.add(button3);
  panel2.add(button4);
 
layouts verschachteln ist gang und gebe und "erlaubt"

wenn dein layout noch komplizierter wird empfehl ich dir ein umfangreicheres layout wie TableLayout. mache leute, die nix besserss zu tun haben als stundenlang an guis zu sitzen, benutzen auch gridbaglayout 😀 (was ebensoviel kann )
 
Roar hat gesagt.:
mache leute, die nix besserss zu tun haben als stundenlang an guis zu sitzen, benutzen auch gridbaglayout 😀 (was ebensoviel kann )
gridbag würde ich nicht empfehlen. ws bietet zwar umfangreiche verschachtelungsmöglichkeiten, aber man braucht vorher einen lageplan auf papier um sich nicht zu verschachteln und den durchblick zu behalten. außerdem ist es im nachhinein schwierig, elemente hinzuzufügen. dann lieber mehrere grids schachteln (siehe beispiel).
 
Scotty hat gesagt.:
Roar hat gesagt.:
mache leute, die nix besserss zu tun haben als stundenlang an guis zu sitzen, benutzen auch gridbaglayout 😀 (was ebensoviel kann )
gridbag würde ich nicht empfehlen. ws bietet zwar umfangreiche verschachtelungsmöglichkeiten, aber man braucht vorher einen lageplan auf papier um sich nicht zu verschachteln und den durchblick zu behalten. außerdem ist es im nachhinein schwierig, elemente hinzuzufügen. dann lieber mehrere grids schachteln (siehe beispiel).
kann ich nix zu sagen, ich habs noch nie benutzt 😉
 
2 Fragen:

1.

wie kann ich bei einem
Code:
new Gridlayout(3,1)
bestimmen, dass die zweite zeile nicht genauso hoch ist wie die erste .. oder geht das nicht?

2.

Code:
ta_chatausgabe = new JTextArea(5,40); // 5 Zeilen, 40 Spalten
ta_chatausgabe.setLineWrap(true);     // lange Zeilen umbrechen!
scrollpane = new JScrollPane(ta_chatausgabe);
hauptfenster.getContentPane().add(scrollpane);
wie füge ich jetzt die scrollpane dem textare hinzu?
 
1. tja, das ist halt gridlayout :-/

2.äh? der code ist doch korrekt. die scrollbars erscheinen natürlich nur dann wenn mehr text in der textarea ist als reinpasst...
 
1. also geht das nicht mit dem gridlayout? verdammt, dann muss ich das doch irgendwie anders machen


2. die scrollbar erscheint aber nicht, egal wie viel text ich eingebe.. 🙁
 
snoop83 hat gesagt.:
2. die scrollbar erscheint aber nicht, egal wie viel text ich eingebe.. 🙁
und du fügst 'ta_chatausgabe' ( '_' bitte nur bei Konstanten verwenden) auch nicht aus versehen nochmal an anderer Stelle in eine Komponente ein?
 
doch, auf ein panel natürlich:

Code:
	private JTextArea  ta_chatausgabe;

	ta_chatausgabe = new JTextArea(5,40); // 5 Zeilen, 40 Spalten
	ta_chatausgabe.setLineWrap(true);     // lange Zeilen umbrechen!
	scrollpane = new JScrollPane(ta_chatausgabe);
	hauptfenster.getContentPane().add(scrollpane);

	p_gesamt.add(ta_chatausgabe);

( p_gesamt ist ein panel, das wiederrum liegt auf meiner frame "hauptfenster" )
 
auf des Panel musst du die ScrollPane legen und NICHT die Textarea(damit entfernst du die TextArea nämlich wieder aus der ScrollPane)!
 
hm, versteh ich jetzt nicht ganz .. bin wie gesagt newb 🙁

kannst mir das am quellcode verdeutlichen,w o genau der fehler steckt?
 
statt
Code:
p_gesamt.add(ta_chatausgabe);
Code:
p_gesamt.add(scrollpane);
 
Eine Komponente kann immer nur in einem Container liegen.
Also kommt die TextArea in die ScrollPane, und dann die ScrollPane ins Panel.
Du fügst also eigentlich deiner TextArea keine Scrollbalken zu, sondern setzt die TextArea in einen Container der scrollen kann.
Besser verständlich?
 
Ah.. jetzt ergibts Sinn! Auch wenn ich das so nicht 100%ig aus dem Quelltext rauslesen kann..

Das mag ich aber nicht an Java .. ist mir fast ZU objektorientiert ...

aber danke, so ist's verständlich ..

> Also kommt die TextArea in die ScrollPane, und dann die ScrollPane ins Panel.
andersrum wär's mir einleuchtender *g*
 
snoop83 hat gesagt.:
Ah.. jetzt ergibts Sinn! Auch wenn ich das so nicht 100%ig aus dem Quelltext rauslesen kann..

Das mag ich aber nicht an Java .. ist mir fast ZU objektorientiert ...
wahrscheilnich c++ vorbelastet 😉

> Also kommt die TextArea in die ScrollPane, und dann die ScrollPane ins Panel.
andersrum wär's mir einleuchtender *g*

warum. die textarea ist eine komponente wo man text reinschrieben kann. die JScrollPane ist ein container, die scrollbalken darstellt und wo man eine komponente reintun kann.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben