Zum Inhalt springen

Frage zu der add(Component comp, int index) Methode


Silizium185

Empfohlene Beiträge

Moin Leute,

hab mal eine simple Frage.

Also ich möchte gerne in einem GridLayout selber bestimmen können, an welchen Stellen meine Komponenten sich befinden sollen. Hab nach einiger Zeit die

public void add(Component comp, int index) Methode gefunden.

Nur leider krieg ich das trotz allem nicht so hin, wie ich das will.

Es geht mir auch hierbei eher um den Umgang mit der genannten Methode.


public class Grid extends MyFrame

{

	public Grid()

	{

		super ("Gridlayout", 300,300,100,100,true);

		setLayout(new GridLayout(4,2, 10,10));

		add(new Button("Button1"),3);

		add(new Button("Button2"),2);

                add(new Button("Button3"),1);

                add (new Button("Button4),0);




//		pack();

	}

}
Ich bekomme aber immer den Fehler, dass es sich um eine illegale Position handelt. Kann mir einer von euch sagen, welchen integer Wert ich am Ende eingeben muss? Am Ende soll es so aussehen

public class Grid extends MyFrame

{

	public Grid()

	{

		super ("Gridlayout", 300,300,100,100,true);

		setLayout(new GridLayout(4,2, 10,10));


		add(new Button ("Button 4"));

		add(new Button ("Button 3"));

		add(new Button ("Button 2"));

		add(new Button ("Button 1"));

	}

}


myFrame ist übrigens eine einfache Klasse, mit der ich die größe und die Position auf den Bildschirm festlege.

Schonmal danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Index den du dieser Methode mitgibst, darf nicht größer als der Index sein, den die Komponente annehmen würde, wenn sie ans Ende hinzugefügt wird.

Das heißt, wenn noch keine Komponente hinzugefügt wurde, kannst du nur den Index '0' angeben, weil mehr nicht möglich ist. Sobald diese hinzugefügt wurde, stehen dir bei der nächsten Komponente die '0' und '1' zur Verfügung. Bei '0' wird die Komponente an den Anfang gesetzt und die 1. Komponente rückt auf den Index '1' nach, oder bei '1' wird die Komponente einfach hinter die 1. Komponente plaziert.

Das heißt um deine Reihenfolge zu erreichen, reicht es wenn du als Index immer '0' mitgibst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jain. An sich versucht ein GridLayoutManager keinen Platz freizulassen. Er teilt immer den vorhandenen Platz auf alle Komponenten auf. Wenn du natürlich mehrere Spalten hast, aber nicht genügend Komponenten hinzugefügt wurden um die letzte Reihe vollständig zu füllen, sieht es natürlich so aus, als wenn der LayoutManager Freiraum lässt.

Wenn du aber 4 Komponenten hinzufügst, ihm aber vorher gesagt hast, es sollten eigentlich 5 Reihen sein, ist ihm das egal. Er verteilt die 4 Komponenten dann auf den gesamten verfügbaren Platz.

Wenn du zwischen den Komponenten mit extra Freiraum arbeiten möchtest, dann musst du das mit einem anderem LayoutManager machen.

Diese sind dann zwar auch mit mehr Arbeit verbundenen, weil du dann zu jeder Komponente nach Angaben machen musst, wie die sich im Layout verhalten sollen, dort ist es dann aber möglich.

Eine Auflistung der Standardlayoutmanager findest du unter A Visual Guide to Layout Managers (The Javaâ„¢ Tutorials > Creating a GUI With JFC/Swing > Laying Out Components Within a Container) .

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...