Dr_Jekyll Geschrieben 18. März 2008 Geschrieben 18. März 2008 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); } Zitieren
kingofbrain Geschrieben 18. März 2008 Geschrieben 18. März 2008 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 Zitieren
Dr_Jekyll Geschrieben 18. März 2008 Autor Geschrieben 18. März 2008 Danke!! Dann schlag ich mich mal durch! Gruß Julia Zitieren
Dr_Jekyll Geschrieben 19. März 2008 Autor Geschrieben 19. März 2008 Wie kann ich ein Textfield so einstellen, dass der Text nicht ins nirgendwo verschwindet sondern man dann, wenn das TextField beendet ist, nichts mehr eingeben kann. Da muss es doch irgendeinen einfachen Aufruf für solche Fälle geben... Zitieren
kingofbrain Geschrieben 19. März 2008 Geschrieben 19. März 2008 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 Zitieren
Dr_Jekyll Geschrieben 19. März 2008 Autor Geschrieben 19. März 2008 Nein ich möchte nur nicht, dass man die Zahl am Ende des Textfields halb sieht. Bei dem Taschenrechner kann man jetzt unendlich viele Zahlen eingeben. Zitieren
Empfohlene Beiträge
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.