Mehre Panels einen Frame zuweisen

LiVo

Mitglied
Hallo 😀
Ich hab ein großes Problem, undzwar bin ich an einem "fiktiven" boniersystem dran.
Und jetzt hänge ich am Design, meine Idee ist es meinen Rechnerframe mit drei Panels zu sortieren.
Einem Hintergrundpanel ohne Layout, darauf dann ein Panel für die TextAreas und den Zahlenbuttons.
Jeweils im GridLayout, aber irgendwie funktioniert es nicht.
Wäre einer so gütig mir zu zeigen woran es liegt das das Panel nurnoch Grau und ohne inhalte ist??

hier der Code (ohne main)

Java:
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class calc extends JFrame implements ActionListener {
	private static final long serialVersionUID = 1054322144645546640L;
	
	String gegeben = null;
	double myGegeben = 0.0;
	JButton[] numbers; 
	JButton storno = new JButton("Eingabe Verwerfen");
	JButton payed = new JButton ("oK");
	public JLabel Betrag = new JLabel("Zu zahlender Betrag: ");
	JLabel gezahlt = new JLabel("Gezahlt:");
	JLabel rueck = new JLabel ("Rückgeld: ");
	JTextArea output = new JTextArea(1,10);
	JTextArea input = new JTextArea(1,10);
	JTextArea toPay = new JTextArea(1,10);
	String[] buttonnames = {"1", "2", "3", "4", "5",
							"6", "7", "8", "9","0", ".", ".00"};
	JPanel mPan = new JPanel ();
	JPanel butPan = new JPanel(new GridLayout(4,3));
	JPanel  panl = new JPanel(/*new GridLayout(3,4)*/);
	
	 public calc(){
		
		mPan.setLayout(null);
		mPan.add(panl);
		mPan.add(butPan);
		panl.add(Betrag);
		panl.add(toPay);
		toPay.setEditable(false);
		panl.add(gezahlt); 
		panl.add(input);
		input.setEditable(false);
		
		 numbers = new JButton[buttonnames.length];
		 for(int i = 0; i<buttonnames.length; i++){
			numbers[i] = new JButton(buttonnames[i]);
			numbers[i].setVisible(true);
			numbers[i].addActionListener(this);
			butPan.add(numbers[i]);
		 }
		 panl.add(rueck);
		 panl.add(output);
		 panl.add(payed);
		 payed.addActionListener(this);
		 panl.add(storno);
		 storno.addActionListener(this);
		 output.setEditable(false);
		 panl.setVisible(true);
		 butPan.setVisible(true);
		 this.setSize(300, 300);
		 this.setDefaultCloseOperation(HIDE_ON_CLOSE);
		 this.add(mPan);
		 this.setVisible(true);
	 }

	public void actionPerformed(ActionEvent calcAE) {

	  try {
		for (int i = 0; i<buttonnames.length; i++){
			if (calcAE.getSource() == numbers[i]){
				input.setText(input.getText()+""+numbers[i].getText());
				gegeben = input.getText();
				myGegeben = Double.parseDouble(gegeben);	
				System.out.println(myGegeben);
			}
		}
	  }
	  catch(NumberFormatException nfe) {
		  
	  }
	  if (calcAE.getSource() == payed){
		 System.out.println(myGegeben); 
		 String StrToPay = toPay.getText();
		 double myToPay = Double.parseDouble(StrToPay);
		  double rech = (myToPay-myGegeben);
		  output.setText(""+rech);
	  }
	  if (calcAE.getSource()== storno){
		  output.setText("");
		  input.setText("");
		  gegeben = null;
		  myGegeben = 0.0;
	  }
	}
}
 
Jo schon, sollte ich dem mPanel also ein layout zuweisen?
Ich habs mir ja eher so gedacht das das layout des Hauptpanels nicht die Layouts der anderen beiden Panels stört
 
Jo schon, sollte ich dem mPanel also ein layout zuweisen?
Ich habs mir ja eher so gedacht das das layout des Hauptpanels nicht die Layouts der anderen beiden Panels stört
Heißt? Ich kann mir darunter nichts vorstellen. Wie sollen die (Haupt)Komponten auf
Code:
mpan
angeordnet werden?

Bei einem Null Layout können die Komponenten mit setBounds(...) angeordnet werden.
 
Nun lässt sich aber die größe des butPan nicht mehr ändern
Java:
butPan.setSize(200, 200);
Warum?!
 
FlowLayout orientiert sich an der PreferredSize der anzuordnenden Komponenten und die bzw. deren Layoutmanager berechnen diese selbstständig. Beschreiben doch mal wie die Komponenten angeordnet werden sollen und mach evtl. eine Skizze. Vielleicht kann man da ein paar Tipps geben.
 
fd6ggv8v.jpg


So ungefähr 😉

Die Skizze sollte alles sagen.
Danke schonmal
 
Ob kleinkariert oder nicht.
Nur weils funktioniert heisst es nich das es richtig ist.
Mit nem Bügeleisen kann man auch nen Nagel in die Wand hauen , ist trotzdem Falsch.
Ich danke dir für die Berichtigung =D
 

Neue Themen


Zurück
Oben