Zum Inhalt springen

GridLayout Panels Größe verändern


Dr_Jekyll

Empfohlene Beiträge

Ich habe ein Problem mit meinen Panels,

meine GUI sieht so aus, das alle Panels gleich groß sind

und ich nicht weiß wie man die Größe anpasst.

import java.awt.Button;

import java.awt.Frame;

import java.awt.TextField;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.*;

import java.awt.event.*;

import javax.swing.Box;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class Calculator extends Frame implements ActionListener

{

Button button0 = new Button(" 0 ");

Button button1 = new Button(" 1 ");

Button button2 = new Button(" 2 ");

Button button3 = new Button(" 3 ");

Button button4 = new Button(" 4 ");

Button button5 = new Button(" 5 ");

Button button6 = new Button(" 6 ");

Button button7 = new Button(" 7 ");

Button button8 = new Button(" 8 ");

Button button9 = new Button(" 9 ");

Button minusBut = new Button(" - ");

Button plusBut = new Button(" + ");

Button gleichBut = new Button(" = ");

Button durchBut = new Button(" / ");

Button malBut = new Button(" * ");

Button kommaBut = new Button(" , ");

Button cBut = new Button(" C ");

TextField textBox = new TextField();

Panel bereich1 = new Panel();

Panel bereich2 = new Panel();

Panel bereich3 = new Panel();

public static void main (String args[])

{

Calculator calc = new Calculator();

calc.setSize (300, 300);

calc.setVisible(true);

}

public Calculator()

{

super("Calculator");

//

bereich1.setLayout(new GridLayout(1,2));

bereich1.add(textBox);

bereich1.add(cBut);

//

bereich2.setLayout(new GridLayout(5, 4));;

bereich2.add(button7);

bereich2.add(button8);

bereich2.add(button9);

bereich2.add(durchBut);

bereich2.add(button4);

bereich2.add(button5);

bereich2.add(button6);

bereich2.add(malBut);

bereich2.add(button1);

bereich2.add(button2);

bereich2.add(button3);

bereich2.add(minusBut);

bereich2.add(button0);

bereich2.add(Box.createHorizontalStrut(1));

bereich2.add(kommaBut);

bereich2.add(plusBut);

//

bereich3.setLayout(new GridLayout(1, 0));

bereich3.add(gleichBut);

this.setLayout (new GridLayout (3, 1));

this.add (bereich1);

this.add (bereich2);

this.add (bereich3);

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Servus,

das liegt daran, das Du GridLayout verwendest. Da sind immer alle Grids gleich hoch und breit.

Wenn Du das nicht willst, dann schau Dir GridBagLayout an, und wenn Du wieder bei Bewusstsein bist, nachdem Dir bei dem miesen LayoutManager die Lichter ausgegangen sind :), kannst Du Dich mit jgoodies FormLayout beschäftigen. Das sollte die schönere Variante sein, als sich mit Sun LMs rumzuquälen.

JGoodies :: Java User Interface Design

Schöne Grüße,

Peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Was heißt "beendet" bei einem TextField? Willst Du, das man nicht mehr Zeichen eingeben kann, als bei einer bestimmten Größe sichtbar sind? Dazu müsstest Du wissen, welche aktuelle Breite Dein Textfeld hat und dann für die aktuelle Schrift und den Inhalt Deines Felds die Breite bestimmen. Aber warum sollte man das wollen? Wenn eine Textbegrenzung sinnvoll ist, dann doch wohl anhand einer Maximalzahl an Zeichen, und nicht anhand der momentanen Größe eines Textfelds.

Wie auch immer, Du kannst einen KeyListener auf dem Textfeld registrieren und dort Deine Prüfung durchführen und bei Bedarf den Text im Feld zurücksetzen.

Peter

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...