Buttons und neue Fenster

KingOfExceptions

Bekanntes Mitglied
hallo leute, ich hoffe ich bin hier im richtigen abschnitt des forums gelandet. nun zu meinem problem:
ich möchte dass wenn der anwender den Button "anmeldung" (anme) anklickt sich ein neues fenster öffnet und dort drin dann dass steht was jetzt in anmeldung() steht. jedoch kann man anscheinend fenster nur im main part öffnen??? :L . jedoch möchte ich dass NUR wenn man auf den button "anmeldung" klickt sich das mit benutzername und passwort öffnet. kann mir da jemand helfen? ich hoffe ich habe mich versändlich ausgedrückt.
PS.: die imports habe ich hier nicht angefügt.


Java:
class Raster1 extends JFrame implements ActionListener

{
	
private static final long serialVersionUID = 1L;

JButton startbutton ; 
JButton exitbutton;
JButton regis;
JButton anme;
JFrame frame;

Raster1(String title)
  {
    super( title );                     
    setLayout( new FlowLayout() );     
       
   }

	
  
  public void actionPerformed(ActionEvent evt)
  {
	  Object obj=evt.getSource();
	  
	  if(obj==exitbutton)
	  {
		  
		  System.exit(0);
	  }
	  
	  
	  
	  if(obj==startbutton)
	  {
		  getContentPane().setBackground(Color.GREEN);
		  game();
		  repaint();
	  }
	  
	  
	  
	  if(obj==regis)
	  {
		  registrierung();
		  repaint();
	  }
	  
	  
	  
	  if(obj==anme)
	  {
		  anmeldung();
		  repaint();
	  }
	  
	  repaint();
  }
  

  
  
  public static void main(String[]args)
  {
	  Raster frm = new Raster ("Das Raster");

	  frm.setSize( 1024, 680 );
	  frm.setVisible( true );
	    
  }

  	String titel;
  	
  public void anmeldung()
  {
	  Raster anmeldung=new Raster("Anmeldung");
	  anmeldung.setSize(200,300);
	  anmeldung.setVisible(true);
	  
	  JTextField benutzer;
	  JLabel banmeldung;
	  JTextField pass;
	  JLabel panmeldung;
	  
	  benutzer=new JTextField(15);
	  banmeldung=new JLabel("Geben Sie ihren Benutzernamen ein: ");
	  pass=new JTextField(15);
	  panmeldung=new JLabel("Geben Sie ihr Passwort ein: ");
	  add(banmeldung);
	  add(benutzer);
	  add(panmeldung);
	  add(pass);
	  setVisible(true);
	  
  }
  
  private void registrierung()
  {
	  JTextField benutzername;
	  JLabel baufforderung; //BENUTZERNAMENAUFFORDERUNG
	  
	  benutzername=new JTextField(15);
	  baufforderung=new JLabel("Geben Sie ihren Benutzernamen ein: ");
	  add(baufforderung);
	  add(benutzername);	  
	   
	  
	  JTextField passwort;
	  JLabel paufforderung;
	  
	  passwort=new JTextField(15);
	  paufforderung=new JLabel("Geben Sie ihr zukünftiges Passwort ein: ");
	  add(paufforderung);
	  add(passwort);
	  setVisible(true);
	  
  }
 
hoffe ich habe mich versändlich ausgedrückt.
Hmm, nicht so ganz. Du hast einmal Raster1 als Klasse, und dann erzeugst du Objekte der Klasse Raster. Was ist dieses Raster denn? Wenn ich dich richtig verstanden habe, möchtest du aus deiner Anwendung heraus einen Dialog öffnen, in dem du Daten in Textfelder eingeben möchtest. Dafür kannst du am besten einen JDialog nehmen.
 
ich möchte dass wenn ich den button anklicke sich ein neues fenster öffnet indem man ein passwort und einen benutzernamen eingeben kann, so wie jetzt nur ein einem neuen fenster.
 
OK, hab ich also schon richtig vermutet. Dann schau dir das mit dem JDialog mal genauer an. In der actionPerformed-Methode des ActionListeners (dein Button) erzeugst du dann den JDialog, auf dem du deine Komponenten (Labels, Textfelder, Button...) wie auf einen JFrame anordnen kannst.
 
Du hast halt normalerweise ein Anwendungsfenster (JFrame) und kannst aus diesem Fenster heraus Dialoge (JDialog) öffnen, um z.B. (wie in deinem Fall) Daten einzugeben, die dann im Hauptprogramm weiter verwendet oder verarbeitet werden können.
Da musst du wohl selbst mit Google mal danach suchen ("Java" und "JDialog" eingeben - da findest du viele Beispiele).
 
Java:
public void anmeldung()
  {
	  JDialog dialog=new JDialog((JFrame)frame, "Anmeldung", true);
	  dialog.setVisible(true);
	  
	  JTextField benutzer;
	  JLabel banmeldung;
	  JTextField pass;
	  JLabel panmeldung;
	  
	  benutzer=new JTextField(15);
	  banmeldung=new JLabel("Geben Sie ihren Benutzernamen ein: ");
	  pass=new JTextField(15);
	  panmeldung=new JLabel("Geben Sie ihr Passwort ein: ");
	  add(banmeldung);
	  add(benutzer);
	  add(panmeldung);
	  add(pass);
	  setVisible(true);
	  
	  
  }

so sieht das jetzt aus. aber wieso werden die sachen nicht in den dialog geschrieben sondern in den frame?
 
du musst dann auch schon
Java:
dialog.add(component)
benutzen 😉
 
so sieht das jetzt aus. aber wieso werden die sachen nicht in den dialog geschrieben sondern in den frame?
Weil du nur die Methode add aufgerufen hast. Und wenn du in der Klasse bzw. dem Objekt des Frames bist, dann werden die Sachen eben auch nur dem Frame hinzugefügt. Wie vor mir schon geschrieben, musst du die Komponenten natürlich auch dem Dialog hinzufügen, also mit dialog.add(deineKomponente). Und du musst dir unbedingt noch die verschiedenen LayoutManager anschauen, die nämlich bestimmen, wie die hinzugefügten Komponenten dort angeordnet werden. Du könntest z.B. eine Klasse schreiben, die von JDialog abgeleitet ist (mit extends). In diese steckst du deine Komponenten und ordnest sie mit einem LayoutManager an. Dann erzeugst du in deinem Frame (dort, wo der Button geklickt wird) ein Objekt des Dialogs.
Hmm, ich vermute mal, du musst dir erst noch grundsätzliche Java-Kenntnisse aneignen, damit du weisst, wie das mit Klassen, Objekten und Methoden funktioniert, und wie so eine grafische Anwendung aufgebaut wird.
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Zurück
Oben