kleinigkeiten bei den buttons

Status
Nicht offen für weitere Antworten.

187

Mitglied
so hab nun so ziemlich das ganze awt und swing forum durchsucht und irgendwie nichst finden koennen.

also folgendes problem(bin noch anfaenger): ich will eigentlich nur einen frame mit 3 panels und zwei buttons.
ein mainpanel und 2 panels mit jeweils einem button drauf, die auf dem mainpanelsitzen.
hab ich ja auch hingekriegt, aber ich will die buttons immer in der selben groesse an der selben stelle und nicht das sie das komplette panel ausfuellen.
also was tun?

abgesehen mal davon....was macht der befehl getContentPane().add(xxx); ?

vielen dank schon mal im vorraus!
Code:
import javax.swing.*;
	import java.awt.*;
	import java.awt.event.*;
	
	public class basic_GUI extends JFrame
	{
		private JPanel panelMain;
		private JPanel panelButton1;
		private JPanel panelButton2;
		private JButton Client;
		private JButton Server;
		private JLabel oben;
	   
	    public basic_GUI()
	      {
	    	 
	              super("bla");
	              setSize(new Dimension (500,350));
	              setLocation(275,200);
	              setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	              setVisible(true);
	              setResizable(false);
	              
	              Client= new JButton ("Client");
	              Client.setSize(new Dimension(100,100));
	              
	              
	              Server=new JButton ("Server");
	              Server.setSize(new Dimension(100,100));
	              
	              
	              panelMain=new JPanel (new GridLayout (1,0));
	              panelMain.setBackground(new Color(10, 15, 56));
	              panelMain.setBorder(BorderFactory.createEmptyBorder(20, 0, 20, 0)); 
	              
	              
	              panelButton1=new JPanel (new GridLayout (1,0));
	              panelButton2=new JPanel (new GridLayout (1,0));
	              
	              
	              panelButton1.add(Client);
	              panelButton2.add(Server);
	              
	              panelMain.add(panelButton1);
	              panelMain.add(panelButton2);
	              
	              addButtonListener(Client);
	              addButtonListener(Server);
	              
	              oben= new JLabel ("Bitte wählen");
	              oben.setHorizontalAlignment(JLabel.CENTER);
	          
	              getContentPane().add(BorderLayout.NORTH, oben);
	              getContentPane().add(BorderLayout.CENTER, panelMain);
	             
	              setVisible(true);
	              
	              //pack();
	      }

	       public static void main(String[] args)
	       {
	       	basic_GUI g = new basic_GUI();
	       }
	       private void addButtonListener(JButton b)
	       {
	           b.addActionListener(new ActionListener() 
	           { 
	               public void actionPerformed(ActionEvent ae) 
	               { 
	                   eingabe(ae.getActionCommand());
	               }
	           });
	       }

	       private void eingabe(String a)
	       {
	           //oeffnen der jeweiligen Wahlfenster
	       }    
	   }
 
getContentPane().add(..)

macht das was es sagt 😉

Es holt sich den Content Pane (ab Java 1.5 braucht man das glaube ich nicht mehr) und added ein Component drauf, so wie es der Layoutmanager zulässt..

Also das adden haut dir die Objekte auf den Frame/Dialog/Panel/Componente
 
das content pane ist das panel auf dem du mit swing zeichnest... bei awt kannst du direkt auf das frame zeichnen...
wieso machst du einzelne panels?? ist hier doch föllig unnötig. oder war das aufgabe?
 
Eigentlich sollte das setzen eines anderen LayoutManagers für die "Button-Panels" das gewünschte Ergebnis erzielen.
Allerdings erfordert das etwas Wissen über die damit erreichbaren Layouts.
Um Dein Problem zu lösen, könntest Du z.B. das GridLayout einsetzen.
 
danke erst mal fuer die vielen schnellen antworten!

@dotlens
nein das ist nicht aufgabe(ist ja nur fuer mich zum ueben) , aber ich dachte das klappt dann vielleicht weil ich es mit einem panel nicht hinbekommen habe.

@L-ectron-X
hab ich fuer die buttonpanels nicht das gridlayout benutzt? oder hab ichs falsch benutzt? beim gridlayout hat man doch quasi ne matrix oder?




das urspruengliche problem war ja, das ich ein panel hatte und 2 buttons nebeneinander(mit abstand zwischen), in einer bestimmten groesse ,in der zentriert im panel haben wollte. noch zwei button listener dazu und fertig dachte ich mir. wer haette ahnen sollen das die buttons so rumzicken.
neue vorschläge fuers neue problem?
 
Schau dir mal das TableLayout an (google) das ist super (wenn man sich mal eingearbeitet hat).

Es ist ein X Y Layout (also eine Tabelle mit Positionierungen), aber das gute ist, wenn du was wegnimmst oder nicht befühlst (Zelle) verschieben sich die anderen Componenten nicht und es arbeitet mit dem resizen super zusammen!
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben