Veröffentlicht 18. März 200817 j 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); }
18. März 200817 j 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
19. März 200817 j 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...
19. März 200817 j 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
19. März 200817 j 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.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.