GridLayout->setPreferedSize(new Dimension(x,y,));

Status
Nicht offen für weitere Antworten.

Developer_X

Top Contributor
Hi, ich habe nach längerer Suche Ein Layout gefunden, das mir zusprach, das GridLayout.
Ich möchte nun aber, dass ein Component mit der im TItel angegeben Methode, 20 hoch ist mit der Y achse
und ein anderer Component mit der Y achse 100 hoch ist, aber leider sind beide hundert hoch, wieso?

Java:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.io.File;
import javax.media.Manager;
import javax.media.Player;
import javax.swing.JFrame;
import javax.swing.JMenuBar;

public class Game extends JFrame
{
	public Game()
	{
		Toolkit tk = null;
		final Dimension d = tk.getDefaultToolkit().getScreenSize();
			    
                  this.setSize(700,400); 
	     this.setVisible(true); 
		//Components
			JMenuBar bar = new JMenuBar();
			bar.setBackground(Color.gray);
			bar.setForeground(Color.lightGray);
			bar.setPreferredSize(new Dimension(d.width,40));
			
			JMenuBar bar2 = new JMenuBar();
			bar2.setPreferredSize(new Dimension(d.width,100));
		//Adds
			this.add(bar);
			this.add(bar2);
		//Last Things to do
			 this.setLayout(new GridLayout(3,1));
			 this.pack();	 
	}
	public static void main(String[]args)
	{
		new Game();
	}
}
das ist das
KSKB
von meinem Programm
 
S

SlaterB

Gast
ein GridLayout malt alle Komponenten gleich groß,
da kommst du nicht drumherum in diesem Layout

How to Use GridLayout (The Java™ Tutorials > Creating a GUI with JFC/Swing > Laying Out Components Within a Container)
A GridLayout object places components in a grid of cells. Each component takes all the available space within its cell, and each cell is exactly the same size. If the GridLayoutDemo window is resized, the GridLayout object changes the cell size so that the cells are as large as possible, given the space available to the container.
 

Leroy42

Top Contributor
Und was soll diese "gewünschte Funktion" sein? :shock:

Das alle Komponenten 20 Pixel hoch sind oder 100?

Wenn verschiedene Komponenten unterschiedlich hoch sein sollen,
rate ich zu einem GridBag-Layout!
 
S

SlaterB

Gast
'genau das gleiche bis auf ..' lässt viele Spekulationen zu, was genau du von dem Layout erwartest,
welchen Teil davon du eigentlich meinst,
denn aus gewisser Sicht ist das GridLayout nichts mehr ohne die weggenommene Eigenschaft

ich schätze aber, die Antwort ist Nein,
am ehesten kommen vielleicht GridBagLayout oder FlowLayout, jeweils mit anderen Mühen,
schau sie dir im Tutorial alle an und/ oder probiere sie einfach mal durch

this.setLayout(new FlowLayout());

ist doch schnell geschrieben
 

cover1012

Aktives Mitglied
Du kannst verschiedene LayoutManager auch ineinander verschachteln. Packe deine Komponenten z.B. auf je ein Panel, dem du jeweils ein BorderLayout (oder ein anderes Layout) zuordnest. Diese Panel kannst du dann auf dein JFrame mit GridLayout setzen. Über diesem Umweg können deine Komponenten im GridLayout verschiede Größen erhalten
 

cover1012

Aktives Mitglied
Wie soll das denn gehen? :noe:

Könntest du ein minimales Beispiel hierzu posten?

na so z.B:

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

public class Game extends JFrame
{
    public Game()
    {
        Toolkit tk = null;
        final Dimension d = tk.getDefaultToolkit().getScreenSize();

            JMenuBar bar = new JMenuBar();
            bar.setBackground(Color.red);
            bar.setPreferredSize(new Dimension(d.width,20));

            JMenuBar bar2 = new JMenuBar();
            bar2.setBackground(Color.yellow);
            bar2.setPreferredSize(new Dimension(d.width,100));

        
            JPanel panel1 = new JPanel();
            panel1.setLayout(new BorderLayout(0,0));
            panel1.add(bar, BorderLayout.NORTH);
        
            JPanel panel2 = new JPanel();
            panel2.setLayout(new BorderLayout(0,0));
            panel2.add(bar2, BorderLayout.NORTH);
        
            this.setLayout(new GridLayout(2,1));
            this.add(panel1);
            this.add(panel2);
            this.setSize(700,400);
            this.setVisible(true);

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

cover1012

Aktives Mitglied
Aber dadurch haben die Komponenten (panel1 und panel2) doch
immer noch dieselbe Größe! :shock:

Ja, natürlich haben sie das. Aber die MenuBars haben die PrefferedSize und liegen auf einem Panel (mit xLayout), das wiederum auf einem Frame mit GridLayout liegt.
Ich habe angenommen, dass es DevX darum ging, innerhalb eines Frames mit gleich großen Feldern (GridLayout), in jedem einzelnen Feld seinen Komponenten eine individuelle Größe zu verpassen.
Aber du hast natürlich recht, wenn du sagst, dass die unmittelbar zum GridLayout hinzugefügten Komponenten immer gleich groß sind.
 

andre111

Bekanntes Mitglied
Für das was er möchte würde sich wohl TableLayout am meisten lohnen. Das hat fast die Funktionalität eines GridBagLayout, aber ist wesentlich einfacher zu verwenden.
Hier ist der Link dazu:
TableLayout
 

andre111

Bekanntes Mitglied
Komplizierter als das GridLayout definitiv, aber wesentlich einfach als GridBagLayout. Damit kannst du auf jeden Fall alle Komponenten genau nach deiner Vorstellung positionieren und dass ohne extremen Aufwand und viel Code wie beim GridBagLayout.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S 3 Fragen, Verzeichnis, GridLayout psoitionieren, Werte für JSpinner Java Basics - Anfänger-Themen 2
L GridLayout, Beispiel? Java Basics - Anfänger-Themen 2
S GridLayout Java Basics - Anfänger-Themen 7
L GridLayout mit JLabel-Array füllen Java Basics - Anfänger-Themen 12
T Inhalt Gridlayout wird nicht angezeigt Java Basics - Anfänger-Themen 6
F Seitenrand beim GridLayout Java Basics - Anfänger-Themen 3
J GridLayout auf Panel zentrieren? Java Basics - Anfänger-Themen 2
D Objekte manuell in GridLayout einfügen Java Basics - Anfänger-Themen 4
B GridLayout - elemente mit Maus abfragen Java Basics - Anfänger-Themen 3
A Textfields + Labels in GridLayout(3,2) Java Basics - Anfänger-Themen 2
V GridLayout - Spaltenbreite variabel ? Java Basics - Anfänger-Themen 5
Developer_X Java GridLayout nicht ganz ausgereift Java Basics - Anfänger-Themen 6
J Verständnisfrage GridLayout Java Basics - Anfänger-Themen 5
G GridLayout Allgemeine Fragen Java Basics - Anfänger-Themen 2
G GridLayout Java Basics - Anfänger-Themen 12
T GridLayout % Verändern? Java Basics - Anfänger-Themen 3
G Gridlayout Java Basics - Anfänger-Themen 4
Q Frage zu GridLayout Java Basics - Anfänger-Themen 5
O größe von panel mit gridlayout Java Basics - Anfänger-Themen 9
B Null-Layout oder GridLayout usw. Java Basics - Anfänger-Themen 5
V GridLayout anpassen? Java Basics - Anfänger-Themen 6
R GridLayout ignoriert setSize() u.ä. Angaben Java Basics - Anfänger-Themen 2
R leeres Feld im GridLayout (dummy Objekt erzeugen?) Java Basics - Anfänger-Themen 2
javaBoon86 Arrays 2 Dimension Werte ausgeben Java Basics - Anfänger-Themen 15
O Array Dimension Java Basics - Anfänger-Themen 2
D Funktion gibt Dimension zurück Java Basics - Anfänger-Themen 11
L Länge der dritten Dimension eines dreidimensionalen Arraya Java Basics - Anfänger-Themen 1
M Feste Größe des JFrames - Problem mit Dimension Java Basics - Anfänger-Themen 6
R Array mit unbekannter Dimension Java Basics - Anfänger-Themen 6
A Länge einer Dimension in 2-dimensionalem Array ? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben