Layout und getPreferredSize()

Status
Nicht offen für weitere Antworten.

ernst

Top Contributor
Hallo allerseits,
Wenn ich im Programm unten selbst eine Zeichenfläche myz bastle und mache:
myz.add(mypan);
mycont.add(myz);
funktioniert es problemlos.

Wenn ich dagegen mache:
mypan.add(myz);
mycont.add(mypan);
funktioniert es nicht, sondern ich muss in der in der Klasse
MyZeichenflaeche _zusätzlich_ noch die Methode
public Dimension getPreferredSize()
implementieren.

1) Warum?
2) Wo steht diese Info?

mfg
Ernst

Code:
import javax.swing.*;
import java.awt.*;

public class MainZeichen {

  public static void main(String[] args) {
    MyFenster myf = new MyFenster();
  }
}

class MyFenster extends JFrame{
  private JButton myb1, myb2;
  private JTextField myt1, myt2;
  private JLabel myl1, myl2;
  private JPanel mypan;
  private Container mycont;


  public MyFenster(){
    myb1=new JButton("Go");
    myb2=new JButton("Ok");
	   
    myt1=new JTextField("hier eingeben",30);
    myt2=new JTextField("hier eingeben",30);
	   
    myl1=new JLabel("Euro-->Dollar");
    myl2=new JLabel("Dollar-->Euro");
	   
    mypan=new JPanel();
    mycont = getContentPane();
    MyZeichenflaeche myz = new MyZeichenflaeche ();
    Container mycont = getContentPane();
    mypan.add(myl1);
    mypan.add(myt1);
    mypan.add(myb1);
    mypan.add(myl2);
    mypan.add(myt2);
    mypan.add(myb2);
    // So funktioniert es nicht:    
    // mypan.add(myz);    
    // mycont.add(mypan);
    // So funktioniert es:
    myz.add(mypan);
    mycont.add(myz);    
    setTitle("Meine Zeichnung");
    setLocation(30,60);
    setSize(600,400);
    setVisible(true);
  }
}

class MyZeichenflaeche extends JPanel {
  public void paintComponent (Graphics myg){
    myg.setColor(Color.blue);
    myg.drawString("Meine Zeichnungen" ,255,20);
    myg.drawLine(10,20,500,300);
    Color myfarbe = new Color(150, 220, 180);
    myg.setColor(myfarbe);
    myg.drawOval(50,50,50,50);
    myg.fillOval(50,50,50,300);
  }

/*
  public Dimension getPreferredSize(){
    return (new Dimension(250,250));
  }
*/
}
 
S

SlaterB

Gast
> Wo steht diese Info?
in Lehrbüchern die du nicht liest ;)
einen Kopf zum Denken braucht man aber auch, alle denkbaren Kombinationen kann niemand aufschreiben

das ContentPane verwendet BorderLayout, welches die Eigenschaft hat, die eingefügten Komponenten auf die maximale Fläche zu vergrößern, relativ egal was PreferredSize so zu vermelden hat

ein normales JPanel hat dagegen standardmäßig FlowLayout, welches nicht maximiert und auf PreferredSize achtet

Fall:
myz.add(mypan);
mycont.add(myz);

myz wird maximiert angezeigt (BorderLayout),
mypan nimmt nur einen kleinen Teil von myz ein (FlowLayout),
da PreferredSize von mypan nur die Standardgröße der Buttons usw. berücksichtigt
->
also noch viel Platz um das paint von myz anzuzeigen

Fall:
mypan.add(myz);
mycont.add(mypan);

mypan wird maximiert angezeigt (BorderLayout),
myz ist in mypan nicht zu sehen, da PreferredSize 0 ist (keine Komponenten wie Buttons enthalten),
 

ernst

Top Contributor
Danke für die Infos.

1)
In der Doku steht bei flowLayout:
"A flow layout lets each component assume its natural (preferred) size."
Von PreferredSize 0 habe ich nichts gelesen.

2)
Bei BorderLayout habe ich nichts dergleichen entdeckt.

Kannst du mir eine Quelle nennen (im Internet), wo diese Infos stehen?


mfg
Ernst
 
S

SlaterB

Gast
> Von PreferredSize 0 habe ich nichts gelesen.

> assume its natural (preferred) size
reicht nicht? muss man denn bei sowas noch danaben schreiben 'PreferredSize 0 führt zur angenommenen Größe PreferredSize = angenommene Größe 0'? ;)

natürlich mall man dann wieder wissen,
dass ein mit paint überschriebenes JPanel die Größe 0 hat,
ist aber auch erstmal eine gute Grundannahmen, wenn nix fassbares wie ein JButton drin ist

------------

> eine Quelle nennen

http://java.sun.com/docs/books/tutorial/uiswing/layout/border.html

If the window is enlarged, the center area gets as much of the available space as possible.
aus solchen Einzelsätzen kann man natürlich kaum as ganze Verhalten abschließend verstehen,
der nächste Satz z.B.
The other areas expand only as much as necessary to fill all available space.
klingt schon schwieriger, würde ich jetzt erstmal (auch) nicht verstehen

Beschreibung hilft schon, aber ich meine durchaus auch Beispiele anschauen + ausprobieren ;)
 

ernst

Top Contributor
>
>natürlich mall man dann wieder wissen,
>dass ein mit paint überschriebenes JPanel die Größe 0 hat,
>ist aber auch erstmal eine gute Grundannahmen, wenn nix fassbares wie ein JButton drin ist
>
>...
>aus solchen Einzelsätzen kann man natürlich kaum as ganze
>Verhalten abschließend verstehen,
>

1)
Kannst du mir eine Quelle nennen (im Internet), wo diese Infos stehen,
wo der ganze Zusammenhang gut dokumentiert ist?

2)
Oder kannst du eine Quelle außerhalb des Internets (Lehrbuch) nennen
wo der ganze Zusammenhang gut dokumentiert ist und die Infos drinstehen?


mfg
Ernst
 
S

SlaterB

Gast
habe ich bereits einen Satz später gemacht:
SlaterB hat gesagt.:
Beschreibung hilft schon, aber ich meine durchaus auch Beispiele anschauen + ausprobieren

(und wenn du weiter so gekünselt fragst, werde ich noch verrückt..,
naja dann muss dir eben jemand anders antworten)
 

ernst

Top Contributor
>(und wenn du weiter so gekünselt fragst, werde ich noch verrückt..,
>naja dann muss dir eben jemand anders antworten)

Ich hatte nicht die Absicht gekünstelt zu fragen und will das auch nicht.
Sorry, falls es so rüberkommt.
Ich bezog mich nur auf eine Aussage vor dir:
---------------------------------------
>> Wo steht diese Info?
>in Lehrbüchern die du nicht liest
----------------------------------------

Ich dachte nur, du hättest an ein konkretes Lehrbuch gedacht...

Trotzdem vielen, herzlich Dank für deine Hilfe (und auch die anderen, die mir geholfen haben).

mfg
Ernst
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Welches Java Layout sollte ich verwenden? AWT, Swing, JavaFX & SWT 3
S Layout - Problem AWT, Swing, JavaFX & SWT 1
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
melaniemueller Layout wechseln über RadioButtons AWT, Swing, JavaFX & SWT 4
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
J Swing Hilfe bei Layout AWT, Swing, JavaFX & SWT 2
R Layered Layout AWT, Swing, JavaFX & SWT 1
E showAndWait is not allowed during animation or layout processing Memory FX AWT, Swing, JavaFX & SWT 2
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
E Swing Layout während der Laufzeit anpassen AWT, Swing, JavaFX & SWT 3
P JavaFX Zugriff auf Fenster/Layout-Container in eigenen Klassen AWT, Swing, JavaFX & SWT 5
R Layout Manager null und Component wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 3
S Kann javafx.scene.layout.VBoxBuilder nicht importieren AWT, Swing, JavaFX & SWT 3
OSchriever Layout über Radiobuttons ändern AWT, Swing, JavaFX & SWT 4
B Swing Probleme mit dem Layout AWT, Swing, JavaFX & SWT 1
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
I JavaFX - festes Layout AWT, Swing, JavaFX & SWT 1
S JavaFX TableView einzelne Zelle Layout zuweisen AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
Neumi5694 Swing Card-Layout, Fokus AWT, Swing, JavaFX & SWT 2
kilopack15 Interface mit Layout verknüpfen AWT, Swing, JavaFX & SWT 2
Y Layout/Ausrichtungsprobleme AWT, Swing, JavaFX & SWT 4
T JavaFX Custom Layout AWT, Swing, JavaFX & SWT 5
A GUI Layout AWT, Swing, JavaFX & SWT 11
A Layout-Manager, JScrollPane, ... Chaos AWT, Swing, JavaFX & SWT 5
L wie Layout-Grid in JXPanel anzeigen? AWT, Swing, JavaFX & SWT 5
L Eigene Component Layout AWT, Swing, JavaFX & SWT 4
Soloeco LayoutManager Wie und welches Layout nutze ich am Besten? AWT, Swing, JavaFX & SWT 13
M LayoutManager Modalen JDialog ein Layout zuweisen AWT, Swing, JavaFX & SWT 3
M LayoutManager Layout reagiert nicht auf Constraints AWT, Swing, JavaFX & SWT 4
IsSchoGuat LayoutManager Layout-Containergrösse AWT, Swing, JavaFX & SWT 4
F GridBag Layout AWT, Swing, JavaFX & SWT 1
Z Absolutes Layout / Kontrolle über Anordnung AWT, Swing, JavaFX & SWT 3
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
M Layout-Probleme unter Swing AWT, Swing, JavaFX & SWT 5
D LayoutManager GUI skalieren und deren Komponenten mit Grid(Bag)Layout-Manager. AWT, Swing, JavaFX & SWT 5
J ComboBoxModel addElement verändert Layout AWT, Swing, JavaFX & SWT 8
E Probelm mit Layout AWT, Swing, JavaFX & SWT 1
B Hilfe welches Layout brauch ich AWT, Swing, JavaFX & SWT 4
P Tipps für GUI-Layout AWT, Swing, JavaFX & SWT 2
M Passender Layout-Manager AWT, Swing, JavaFX & SWT 3
M LayoutManager Layout zur Laufzeit ändern AWT, Swing, JavaFX & SWT 8
N Swing Zweifarbiges Layout für den Filechooser AWT, Swing, JavaFX & SWT 12
B LayoutManager Card Layout AWT, Swing, JavaFX & SWT 2
E Angehängtes Layout, aber wie? AWT, Swing, JavaFX & SWT 12
1 Eigenes Layout schreiben AWT, Swing, JavaFX & SWT 4
B SWT layout invalidieren in SWT? AWT, Swing, JavaFX & SWT 4
R Welchen Layout Manager/ Wie strukturieren? AWT, Swing, JavaFX & SWT 14
J Layout: oben 20% unten 80% AWT, Swing, JavaFX & SWT 12
T Layout für Listendarstellung AWT, Swing, JavaFX & SWT 3
F LayoutManager Null-Layout unter Linux im TreeCellEditor AWT, Swing, JavaFX & SWT 3
K Eclipse Layout (Gimp Layout, Tiled Layout...) AWT, Swing, JavaFX & SWT 4
C LayoutManager Passendes Layout gesucht AWT, Swing, JavaFX & SWT 2
M Layout funktioniert nicht AWT, Swing, JavaFX & SWT 3
dzim Layout von Panes in JFX2 AWT, Swing, JavaFX & SWT 17
H Layout Idee AWT, Swing, JavaFX & SWT 8
M Swing Dynamisches Layout AWT, Swing, JavaFX & SWT 10
P Swing welchen Layout Manager verwenden AWT, Swing, JavaFX & SWT 9
J LayoutManager Komponentenaustausch zerschießt Layout AWT, Swing, JavaFX & SWT 4
F Layout-Problem AWT, Swing, JavaFX & SWT 2
K Gui Layout Frage AWT, Swing, JavaFX & SWT 5
B Anderen Layout-Manager verwenden AWT, Swing, JavaFX & SWT 17
E Null-Layout - Wie geht es ohne? AWT, Swing, JavaFX & SWT 19
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
D Bild in JPanel verschiebt Layout. Wie fixieren? AWT, Swing, JavaFX & SWT 9
GUI-Programmer Wieder ne Layout Frage AWT, Swing, JavaFX & SWT 11
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
D Problem mit 3-Spalten Layout AWT, Swing, JavaFX & SWT 17
ARadauer Wenig Material zum Thema: Design, Layout, Usability von Swing Anwendungen AWT, Swing, JavaFX & SWT 11
S LayoutManager Welcher LayoutManager für dieses zweispaltige Layout? AWT, Swing, JavaFX & SWT 13
G LayoutManager Layout welches von Links nach rechts anordnet mit TOP Alignment! AWT, Swing, JavaFX & SWT 5
A Best practice für konkretes Layout AWT, Swing, JavaFX & SWT 10
G LayoutManager Layout für Spalten AWT, Swing, JavaFX & SWT 8
A Layout/JPanelgröße AWT, Swing, JavaFX & SWT 6
S pack() bei null-Layout AWT, Swing, JavaFX & SWT 10
C SWT Tabellen-Layout in StyledText? AWT, Swing, JavaFX & SWT 6
J LayoutManager Welchen Layout/Design-Manager? AWT, Swing, JavaFX & SWT 4
R Swing Layout setzen AWT, Swing, JavaFX & SWT 3
L Layout automatische Anpassung umgehen? AWT, Swing, JavaFX & SWT 5
A Problem mit Layout-Manager AWT, Swing, JavaFX & SWT 11
J Button Layout anpassen AWT, Swing, JavaFX & SWT 22
H LayoutManager Layout mit GridBagLayout machbar? AWT, Swing, JavaFX & SWT 6
B Buttongröße im Layout AWT, Swing, JavaFX & SWT 4
B LayoutManager Layout Problem AWT, Swing, JavaFX & SWT 14
O LayoutManager Layout entwerfen AWT, Swing, JavaFX & SWT 3
A diverse Layout-Fragen AWT, Swing, JavaFX & SWT 4
F LayoutManager Eigenes Layout die Lösung?! AWT, Swing, JavaFX & SWT 4
dzim SWT Layout mit Sections aus Eclipse Forms AWT, Swing, JavaFX & SWT 17
F JScrollPane verwirft Layout von JPanel AWT, Swing, JavaFX & SWT 2
C LayoutManager Layout und vergrößern des Frames AWT, Swing, JavaFX & SWT 5
E Swing Runde Buttons / Position eines Obj. im Layout AWT, Swing, JavaFX & SWT 7
S Swing UI-Elemente ordnen sich ungewollt in einer Reihe (ohne Layout) AWT, Swing, JavaFX & SWT 5
A Ungewollte Layout änderungen AWT, Swing, JavaFX & SWT 3
A Suche: Eclipse-GUI-Layout AWT, Swing, JavaFX & SWT 5
E JPanel mit Null Layout entfernt Buttons AWT, Swing, JavaFX & SWT 11
N Swing Layout positionieren AWT, Swing, JavaFX & SWT 2
B Methode setzt nicht das Layout in einer if-Abfrage AWT, Swing, JavaFX & SWT 13
H LayoutManager Dynamisches Layout AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben