jButton auf von jFrame erzeugtem jDialog

Durchstarter

Mitglied
Also ich habe ein jFrame mit einem Button welches ein jDialog öffnet mit einem weitern Button allerdings habe ich ein Problem damit dem Button eigenschaften zuzuordnen wie z.B ein ActionListenter für Rechnungen oder was auch immer oder sogar die größe momenten ist der Button über das ganze Fenster hier ist der Code :(

[Java]import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;


public class TestFrameOnFrame extends JFrame implements ActionListener{

public TestFrameOnFrame(){

JButton button = new JButton("Show New Frame");
button.addActionListener(this);
this.add(button); this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
JDialog dialog = new JDialog(this);
dialog.setSize(new Dimension(800, 600));
dialog.setTitle("Search Dialog");
dialog.add(new JButton ("Just a test"));
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dialog.setVisible(true);

}

public static void main(String[] args) {
new TestFrameOnFrame();
}

}[/code] ich kann einfach selbst keine lösung finden

Ich dachte an

Java:
    button.setBounds(10,10,40,40);

allerdings hat das nicht so ganz funktioniert, wäre nett wenn jemand helfen könnte
 

Durchstarter

Mitglied
Als ich es mit setBounds versuchte bekam ich diese Meldung

Java:
TestFrameOnFrame.java:30:5: error: cannot find symbol
    button.setBounds(10,10,40,40);
    ^
  symbol:   variable button
  location: class TestFrameOnFrame
1 error
ich hab halt nur versucht wie es geht weiß ich ja nicht
 

VfL_Freak

Top Contributor
Moin,

Als ich es mit setBounds versuchte bekam ich diese Meldung
Java:
TestFrameOnFrame.java:30:5: error: cannot find symbol
    button.setBounds(10,10,40,40);
    ^
  symbol:   variable button
  location: class TestFrameOnFrame
1 error
wenn du dies wirklich in Zeile 30 des am Anfang geposteten Code versucht haben solltest, dann kann es auch nicht funktionieren, da 'button' doch gar nicht bekannt ist (genau das besagt nämlich die Meldung) !!
Mach das mal oben beim 'adden' ....

Zudem: es ist hier immer angeraten den aktuellen Code zu posten, bei dem der Fehler auftritt und dann natürlich die Fehlermeldung selbst! Ansonsten wird sich da i. d. R. kaum einer drum kümmern, da keiner Lust hat herumzuraten WAS und WO.
Danke!

Gruß Klaus
 

Durchstarter

Mitglied
Der JButton hat ja irgendwie jetzt keinen Namen :noe:

Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
 
 
public class TestFrameOnFrame extends JFrame implements ActionListener{
  
  public TestFrameOnFrame(){   
    
    JButton button = new JButton("Show New Frame");
    button.addActionListener(this);
    this.add(button);                           this.pack();
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);
  }
  @Override
  public void actionPerformed(ActionEvent e) {
    JDialog dialog = new JDialog(this);
    dialog.setSize(new Dimension(800, 600));
    dialog.setTitle("Search Dialog");
    dialog.add(new JButton ("Just a test"));
    JButton.setBounds(10,10,40,40);
    dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    dialog.setVisible(true);
    
  }
  
  public static void main(String[] args) {
    new TestFrameOnFrame();
  }
  
}

mit der Fehlermeldung

Java:
TestFrameOnFrame.java:30:12: error: non-static method setBounds(int,int,int,int) cannot be referenced from a static context
    JButton.setBounds(10,10,40,40);
           ^
1 error

muss ich da eine anderen Befehl benutzen weil setBounds funktioniert anscheinend nicht...
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Moin,

oh, da geht ja einiges durcheinander ...

Der JButton hat ja irgendwie jetzt keinen Namen
Natürlich hat er einen Namen ... nur keine Schönen !!
Java:
 JButton button = new JButton("Show New Frame")
Und in DEM Block musst Du dann auch die Eigenschaft setzen.
Warum willst Du das denn im ActionListener machen ??

Java:
JButton.setBounds(10,10,40,40);
Das kann ja auch nicht klappen!!
"JButton" ist die KLASSE und für die kannst Du nun mal keine Eigenschaften setzen !

Gruß Klaus
 
Zuletzt bearbeitet:

Durchstarter

Mitglied
Ok ich habe hier mein Selbstgeschriebenen Quelltext

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

public class NAME extends JFrame {
  
  private JButton jButton1 = new JButton();
  private JLabel jLabel1 = new JLabel();
  
  public NAME (String title) {
    
    super(title);
    setSize(165,100);
    setLocationRelativeTo(null);
    setVisible(true);
    setResizable(true);
    Container cp = getContentPane();
    cp.setLayout(null);
    jLabel1.setBounds(54,30,130,20);
    jLabel1.setText("");
    cp.add(jLabel1);
    jButton1.setBounds(10,10,130,20) ;
    jButton1.setText("Klick mich!");
    cp.add(jButton1);
    jButton1.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        jButton1_ActionPerformed(evt);
      }
    });
    
  }
  public void jButton1_ActionPerformed(ActionEvent evt) {
    jLabel1.setText("DANKE!");
  }    
  
  public static void main(String[] args) {
    new NAME("Test");
  } 
  
}

Anstatt das der Buttonklick dem Label den Text DANKE! zuordnet würde ich gerne das ich mit dem Button ein anderes jFrame öffne welches ich nur zum probieren mit dem Java-Editor erstellt habe.

Der Quelltext des zu öffnenden sieht so aus:

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 17.03.2015
  * @author 
  */

public class Versuch extends JFrame {
  // Anfang Attribute
  private JButton jButton1 = new JButton();
  private JLabel jLabel1 = new JLabel();
  // Ende Attribute
  
  public Versuch(String title) { 
    // Frame-Initialisierung
    super(title);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    int frameWidth = 300; 
    int frameHeight = 300;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    setResizable(false);
    Container cp = getContentPane();
    cp.setLayout(null);
    // Anfang Komponenten
    
    jButton1.setBounds(16, 16, 75, 25);
    jButton1.setText("jButton1");
    jButton1.setMargin(new Insets(2, 2, 2, 2));
    jButton1.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        jButton1_ActionPerformed(evt);
      }
    });
    cp.add(jButton1);
    jLabel1.setBounds(24, 56, 110, 20);
    jLabel1.setText("text");
    cp.add(jLabel1);
    // Ende Komponenten
    
    setVisible(true);
  } // end of public Versuch
  
  // Anfang Methoden
  public void jButton1_ActionPerformed(ActionEvent evt) {
    jLabel1.setText("Erfolg");// TODO hier Quelltext einfügen
  } // end of jButton1_ActionPerformed

  // Ende Methoden
  
  public static void main(String[] args) {
    new Versuch("Versuch");
  } // end of main
  
} // end of class Versuch
(Im Java-Editor erstellt um Zeit zu sparen da ich hier nur Versuche es zum funktionieren zu bringen aber ich keinen Ansatz finden kann)

Ich hatte zuvor schon geschafft ein neues Fenster zu öffnen mit

Java:
 JDialog dialog = new JDialog(this);
    dialog.setSize(new Dimension(800, 600));
    dialog.setTitle("Search Dialog");
    dialog.add(new JButton ("Test"));
    dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    dialog.setVisible(true);

Allerdings ist hier das Problem gewesen das ich dem erzeugten jButton auf dem Dialog keine größe mit setBounds zuordnen konnte (der einzige mir bekannte Befehlt dafür), den ActionListener für den Button konnte ich auf dem Dialog auch nicht erstellen und ich finde dafür auch keine Ansätze die ich mit meinem Wissen verstehen könnte.



Meine Frage ist nun ob ich mit dem Buttonklick aus dem 1. Quelltext das jFrame des 2. Quelltext aufrufen kann und wenn das nicht gehen sollte wie ich das mit dem jDialog hinbekomme.

Danke im vorraus! (mehrere Fragen könnten folgen :) )
 

Joose

Top Contributor
@TO: Habe deinen neuen Thread (mit gleichem Thema) sowie diesen zusammengeführt.
Bitte beachte pro Thema nur einen Thread zu starten, danke! :)
 
Zuletzt bearbeitet:

Durchstarter

Mitglied
Das ist ja jetzt der Button auf dem jFrame, nicht der auf dem Dialog

Java:
JButton button = new JButton("Show New Frame")

welchen Namen hat denn der Button auf dem Dialog ...?

Java:
    dialog.add(new JButton ("Just a test"));
irgendwie hat dieser Button ja keinen Namen ....
 

Joose

Top Contributor
welchen Namen hat denn der Button auf dem Dialog ...?

Java:
    dialog.add(new JButton ("Just a test"));
irgendwie hat dieser Button ja keinen Namen ....

Keinen. Du kannst dieses JButton Objekt nicht über einen Bezeichner ansprechen, da du es keiner lokalen Variable zuweist.
Du kannst aber zuerst lokal ein JButton Objekt erstellen und dieses dann dem JDiagog hinzufügen.

Java:
JButton b = new JButton("Test");
dialog.add(b);
 
Zuletzt bearbeitet:

Durchstarter

Mitglied
Habe es zu

Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
 
 
public class TestFrameOnFrame extends JFrame implements ActionListener{
  
  public TestFrameOnFrame(){   
    JButton b = new JButton("Test");
    b.setBounds(10,10,130,20) ;
    JButton button = new JButton("Show New Frame");
    button.addActionListener(this);
    this.add(button);                           this.pack();
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);
  }
  @Override
  public void actionPerformed(ActionEvent e) {
    JDialog dialog = new JDialog(this);
    dialog.setSize(new Dimension(800, 600));
    dialog.setTitle("Search Dialog");
    dialog.add(b);
    dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    dialog.setVisible(true);
    
  }
  
  public static void main(String[] args) {
    new TestFrameOnFrame();
  }
  
}

geändert und jetzt sagt er mir schonwieder das was falsch ist :(

Java:
TestFrameOnFrame.java:30:16: error: cannot find symbol
    dialog.add(b);
               ^
  symbol:   variable b
  location: class TestFrameOnFrame
1 error

aber ich habe den Button doch am anfang erstellt (habe das mit dem namen b mal einfach übernommen)....

liegt das an dem @override ?

EDIT:
habe mal einfach probiert und

Java:
dialog.add(JButton(b));
geht auch nicht
 
Zuletzt bearbeitet:

Flown

Administrator
Mitarbeiter
Unterwasser atmen funktioniert auch nicht? Was soll ich den machen?

Was sind das für Fragen? Versuchst du auch mal was zu verstehen? Lest du auch die Beiträge die versuchen dir zu helfen?

Du hast ein Scope Problem. D.h. du definierst einen Button in einer anderen Methode (in deinem Fall im Konstruktor). Dies ist dann der Gültigkeitsbereich von deinem Button. Wenn du den Button über die ganze Klasse verwenden möchtest, dann erstell ihn als Feld (private JButton ...).

So ein funktionierendes Beispiel, wie man sowas implementiert:
- Man leitet nicht von JFrame ab (ich weiß nicht warum das so viele machen)
- In der Regel reichen anonyme ActionListener (Der Button weiß ja so und so wer er ist und was er machen soll)
- Man startet Swing-Applikationen über den EDT (SwingUtilities.invokeLater)
- Man arbeitet immer mit einem ligthweight-Container und fügt es dem Frame/Dialog hinzu (Also nicht den contentPanel verwenden)

Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class TestFrameOnFrame {
  
  public TestFrameOnFrame() {
    JFrame frame = new JFrame();
    
    JPanel mainPanel = new JPanel();
    
    JButton button = new JButton("Show New Frame");
    button.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        createDialog(frame);
      }
    });
    mainPanel.add(button);
    frame.add(mainPanel);
    frame.pack();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
  }
  
  private void createDialog(JFrame frame) {
    JDialog dialog = new JDialog(frame);
    dialog.setSize(800, 600);
    dialog.setTitle("Search Dialog");
    
    JPanel mainPanel = new JPanel();
    JButton b = new JButton("Test");
    mainPanel.add(b);
    
    dialog.add(mainPanel);
    dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    dialog.setVisible(true);
  }
  
  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
      @Override
      public void run() {
        new TestFrameOnFrame();
      }
    });
  }
}
 

Durchstarter

Mitglied
Ok danke Flown das Funktioniert jetzt so wie gewünscht, allerdings hab ich ja am mainPanel war es glaub ich die 2 Buttons, wobei jeweils einer ein neues Fenster öffnet. Wenn ich Fenster 1 öffne bleibt das andere Fenster da, und wenn ich es schließe dann schließen sich beide Fesnter. Wenn ich allerdings Fenster 2 öffne und das andere Fenster schließe bleibt Fenster 2 offen und schließt sich nicht mit was ich gerne auch für Fesnter 1 so hätte.
Desweiteren kann man komischerweise die größe oder position der Buttons nicht festlegen (Compilen lässt es sich mit setBounds aber es ändert nichts am Button)

Hier ist mal mein derzeitiger Code

Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class Fensterlernen {
  //Definierung               
  public Fensterlernen() {
    //Objekte
    JFrame frame = new JFrame();
    JFrame frame2 = new JFrame();
    JPanel mainPanel = new JPanel();
    
    JButton button2 = new JButton ("Fenster 1");
    JButton button = new JButton("Fenster 2");
    
    //ActionListener
    button.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        createDialog(frame);
      }
    });
    button2.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        createDialog2(frame2);
      }
    });
    
    //Eigenschaften
    frame.setTitle("Fenster");
    mainPanel.add(button2);
    mainPanel.add(button);
    frame.add(mainPanel);
    frame.setVisible(true);
    frame.pack();
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.setResizable(false);
    
  }
  
  //Fenster 1
  private void createDialog(JFrame frame) {
    JDialog dialog = new JDialog(frame);
    dialog.setSize(200, 80);
    dialog.setTitle("Fenster 2");
    
    JPanel mainPanel = new JPanel();
    
    JButton exitbutton = new JButton("Exit");
    exitbutton.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        dialog.setVisible(false);
        
      }
    });
    mainPanel.add(exitbutton);
    
    dialog.add(mainPanel);
    dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    dialog.setVisible(true);
    
    
  }
  
  //Fenster 2
  private void createDialog2(JFrame frame2) {
    JDialog dialog = new JDialog(frame2);
    dialog.setSize(200, 80);
    dialog.setTitle("Fenster 1");
    
    JPanel mainPanel = new JPanel();
    
    JButton exitbutton = new JButton("Exit");
    exitbutton.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        dialog.setVisible(false);
      }
    });
    mainPanel.add(exitbutton);
    
    dialog.add(mainPanel);
    dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    dialog.setVisible(true);
  }
  // Ende
  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
      @Override
      public void run() {
        new Fensterlernen();
      }
    });
  }
}
 

Flown

Administrator
Mitarbeiter
Kannst du die Frage bitte nochmal stellen? Benenne die Fenster bitte nach ihrem Titel und sag noch mal was du haben möchtest.
 

Durchstarter

Mitglied
Also ich habe das Hauptfenster "frame"(Fenster) auf welchem das "mainPanel" liegt.
Desweiteren habe ich nochmal ein "frame" und "frame2".
Außerdem habe ich noch auf diesem "mainPanel" den "button" und "button2".

"button"(Auf dem "Fenster") öffnet "frame"(Fenster 2), wenn ich jetzt "Fenster" schließe, beendet sich auch "Fenster2".

"button2"(Auf dem "Fenster") öffnet "frame2"(Fenster 1), wenn ich hier jetzt das "Fenster" schließe bleibt "Fenster 1" weiterhin offen und schließt nicht mit was ich gerne auch für "Fenster 2" so hätte.

ein weiteres Problem sind die Buttons die mit deinem Code mitkommen (den ich übernommen hatte), ich kann weder größe noch Position festlegen. Es lässt sich mit setBounds compilen allerdings bewegt oder verändert sich nichts.

Derzeitiger Code:

Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class Fensterlernen {
  //Definierung               
  public Fensterlernen() {
    //Objekte
    JFrame frame = new JFrame();
    JFrame frame2 = new JFrame();
    JPanel mainPanel = new JPanel();
    
    JButton button2 = new JButton ("Fenster 1");
    JButton button = new JButton("Fenster 2");
    
    //ActionListener
    button.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        createDialog(frame);
      }
    });
    button2.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        createDialog2(frame2);
      }
    });
    
    //Eigenschaften
    frame.setTitle("Fenster");
    mainPanel.add(button2);
    mainPanel.add(button);
    frame.add(mainPanel);
    frame.setVisible(true);
    frame.pack();
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.setResizable(false);
    
  }
  
  //Fenster 1
  private void createDialog(JFrame frame) {
    JDialog dialog = new JDialog(frame);
    dialog.setSize(200, 80);
    dialog.setTitle("Fenster 2");
    
    JPanel mainPanel = new JPanel();
    
    JButton exitbutton = new JButton("Exit");
    exitbutton.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        dialog.setVisible(false);
        
      }
    });
    mainPanel.add(exitbutton);
    
    dialog.add(mainPanel);
    dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    dialog.setVisible(true);
    
    
  }
  
  //Fenster 2
  private void createDialog2(JFrame frame2) {
    JDialog dialog = new JDialog(frame2);
    dialog.setSize(200, 80);
    dialog.setTitle("Fenster 1");
    
    JPanel mainPanel = new JPanel();
    
    JButton exitbutton = new JButton("Exit");
    exitbutton.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        dialog.setVisible(false);
      }
    });
    mainPanel.add(exitbutton);
    
    dialog.add(mainPanel);
    dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    dialog.setVisible(true);
  }
  // Ende
  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
      @Override
      public void run() {
        new Fensterlernen();
      }
    });
  }
}
 
Zuletzt bearbeitet:

Flown

Administrator
Mitarbeiter
Also jetzt hab ich es verstanden. Zum Verständnis: Ein Dialog ist ein "Unterfenster", dass normalerweise einen parent hat. Das heißt, wenn sich der parent schließt soll auch der Dialog geschlossen werden. Der Dialog ist auch dazu gedacht modale Fenster zu gestalten.

Also musst du dich entscheiden, ob du jetzt ein eigenständiges Fenster (JFrame) oder eine zusammenhängendes Fenster (JDialog) haben möchtest.

Ich lege dir die API ans Herz und auch die Oracle Tutorials. Unbedingt nachlesen, was, wie, wo und wann.

Es ist nicht böse gemeint, aber du machst einfach und verstehst es nicht was du da tust. Ich lege dir auch nahe, dass du nochmal zu den Grundlagen zurückkehrst.

Verbesserungen an deinem Code:
- Vermeide sinnlose Kommentare (wie z.B. Objekte, ActionListener, ...). Man sieht im Code was passiert
- Aggregiere gleichen Code zu einer Methode
- Fenster schließt man mit <frame>.dispose()
- Normalerweise konfiguriert man ein Fenster am Anfang, dann fügt man den Content ein und zum Schluß wird alles angezeigt (mit <frame>.setVisible(true)). Falls du das nicht so machst, kann es sein das du manuell repaints aufrufen musst, wenn du den Componentbaum, während der Anzeige änderst
- Vermeide sinnlose Variablen (JFrame frame2)
- Vermeide Nummerierungen bei Komponenten (wie frame1, frame2, ... oder button1, button2, ...) -> sprechende Namen!

Wenn du absolute Positionen und Größen haben möchtest, musst du das null-Layout verwenden. Best practice ist aber mit LayoutManager zu arbeiten. Also würde ich dir vorschlagen, dass du dich an diese gewöhnst.

PS: wenn du in einem LayoutManager einen Button größer gestalten möchtest, dann musst du die preferredSize der Komponenten setzen (funktioniert nicht bei allen Layouts!).

Java:
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class Fensterlernen {
  
  public Fensterlernen() {
    JFrame frame = new JFrame("Fenster");
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.setResizable(false);
    
    JPanel mainPanel = new JPanel();
    
    JButton openFirstDialogBtn = new JButton("Fenster 1");
    JButton openSecondDialogBtn = new JButton("Fenster 2");
    
    openFirstDialogBtn.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        createDialog("Fenster 1");
      }
    });
    openSecondDialogBtn.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        createDialog("Fenster 2");
      }
    });
    
    openSecondDialogBtn.setPreferredSize(new Dimension(200, 50));
    
    mainPanel.add(openFirstDialogBtn);
    mainPanel.add(openSecondDialogBtn);
    
    frame.add(mainPanel);
    
    frame.pack();
    frame.setVisible(true);
    
  }
  
  private void createDialog(String title) {
    JDialog dialog = new JDialog();
    dialog.setTitle(title);
    dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    dialog.setSize(200, 80);
    
    JPanel mainPanel = new JPanel();
    
    JButton exitBtn = new JButton("Exit");
    exitBtn.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        dialog.dispose();
        
      }
    });
    mainPanel.add(exitBtn);
    
    dialog.add(mainPanel);
    dialog.setVisible(true);
    
  }
  
  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
      @Override
      public void run() {
        new Fensterlernen();
      }
    });
  }
}

Java:
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
B JButton erscheint in JFrame, obwohl er diesem nicht zugeordnet wurde! AWT, Swing, JavaFX & SWT 1
stylegangsta Eigene Klasse für JButton aus dem JFrame abrufen AWT, Swing, JavaFX & SWT 29
I JFrame mit JButton schließen? AWT, Swing, JavaFX & SWT 0
D JList&JButton erst nach Resize des JFRame sichtbar AWT, Swing, JavaFX & SWT 2
J Swing JFrame slideout, wenn JButton gedrückt wurde AWT, Swing, JavaFX & SWT 0
B Schwer zu beschreibendes Problem mit JFrame oder JButton AWT, Swing, JavaFX & SWT 8
Z Swing JButton,JFrame, ArrayList & so weiter... AWT, Swing, JavaFX & SWT 20
F ActionListener von JButton funktioniert mit JFrame aber nicht mit JDialog AWT, Swing, JavaFX & SWT 2
F JButton in JFrame positionieren AWT, Swing, JavaFX & SWT 1
C JButton + JFrame Reaktion SEHR langsam. AWT, Swing, JavaFX & SWT 2
G JButton benutzen um ein neues JFrame zu erstellen AWT, Swing, JavaFX & SWT 3
T JButton im JFrame die zweite AWT, Swing, JavaFX & SWT 4
G JButton mit importFiles-Funktion auf JDrawPane AWT, Swing, JavaFX & SWT 5
B JButton Search AWT, Swing, JavaFX & SWT 8
B Swing JButton mit KeyListener AWT, Swing, JavaFX & SWT 3
L JButton durch Mausklick auslösen und Enter-Taste AWT, Swing, JavaFX & SWT 2
N Erlennen ob JButton gedrückt ist AWT, Swing, JavaFX & SWT 6
D JButton Form verändern AWT, Swing, JavaFX & SWT 4
R Grafik per JButton laden und austauschen lassen AWT, Swing, JavaFX & SWT 14
SvenPittelkow Programm soll auf JButton warten bis der geklickt wurde AWT, Swing, JavaFX & SWT 1
Badebay Problem mit JButton AWT, Swing, JavaFX & SWT 2
Z Swing Drag and Drop mit einem JButton AWT, Swing, JavaFX & SWT 1
Z Swing Kann man auf JButton zeichenen AWT, Swing, JavaFX & SWT 3
J JButton Icon hinzufügen AWT, Swing, JavaFX & SWT 5
U Swing JButton mit Icon AWT, Swing, JavaFX & SWT 7
ms_cikar Jbutton erzeugt neue Buttons AWT, Swing, JavaFX & SWT 2
Drachenbauer Swing Wie ändere ich die Farbe der Konturen von jButton und jCombobox? AWT, Swing, JavaFX & SWT 18
Drachenbauer Swing Wie ändere ich die helle geklickt-Farbe von einem JButton? AWT, Swing, JavaFX & SWT 4
A Swing JButton mit Pfeiltasten bewegen AWT, Swing, JavaFX & SWT 6
F Swing Scrollbare Liste von JButton AWT, Swing, JavaFX & SWT 4
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
J JButton zum ändern Der Schriftart/Schriftgröße AWT, Swing, JavaFX & SWT 2
A Swing JButton aussehen AWT, Swing, JavaFX & SWT 12
J jButton soll nach klicken eine Variable um 1 erhöhen AWT, Swing, JavaFX & SWT 2
Legi Swing JButton Icon verschiebt sich AWT, Swing, JavaFX & SWT 2
T Swing Änderung des ActionListener Events nach Klick auf JButton AWT, Swing, JavaFX & SWT 2
S Swing JButton verschwindet nach Compilieren AWT, Swing, JavaFX & SWT 8
B Swing Posistion von JButton auslesen gibt immer 0 aus AWT, Swing, JavaFX & SWT 1
J Thread kennt JButton nicht. AWT, Swing, JavaFX & SWT 11
G Swing JButton ändert (unerwünscht) Größe bei Ausführung AWT, Swing, JavaFX & SWT 4
MR._FIRE_Flower Variable setzten mit JButton AWT, Swing, JavaFX & SWT 5
S Mit JButton neues Fester öffnen und das alte schließen AWT, Swing, JavaFX & SWT 3
T JButton wird beim vergrößern des Fensters erst sichtbar AWT, Swing, JavaFX & SWT 4
R Swing Verändern der Ausrichtung JButton und neu anzeigen AWT, Swing, JavaFX & SWT 2
G Swing JButton - Keine Klickanimation AWT, Swing, JavaFX & SWT 4
Joker4632 JButton nicht sichtbar, aber funktionsfähig AWT, Swing, JavaFX & SWT 8
B Swing JButton deaktivieren, wenn nicht alle JTextFields ausgefüllt sind. AWT, Swing, JavaFX & SWT 2
D JButton per Tastenkombi auswählen AWT, Swing, JavaFX & SWT 2
K JButton nicht sichtbar machen für User 2 AWT, Swing, JavaFX & SWT 4
L Swing JButton soll link öffnen AWT, Swing, JavaFX & SWT 1
K JButton auf anderer Klasse AWT, Swing, JavaFX & SWT 6
A JButton soll durch anklicken die Farbe wechseln AWT, Swing, JavaFX & SWT 8
T KeyListener funktioniert nicht wenn ich ein JButton hinzufüge AWT, Swing, JavaFX & SWT 1
R Swing ActionListener bei JButton AWT, Swing, JavaFX & SWT 9
B JButton -> Rahmen wegbekommen AWT, Swing, JavaFX & SWT 7
N JButton über benutzerdefinierte paintComponent setzen AWT, Swing, JavaFX & SWT 3
T JButton überlagern sich und werden erst beim Mausscrollen sichtbar AWT, Swing, JavaFX & SWT 2
M JButton Probleme AWT, Swing, JavaFX & SWT 14
T Klasse über JButton schließen AWT, Swing, JavaFX & SWT 4
M Textfarbe JButton verändern AWT, Swing, JavaFX & SWT 2
N JButton ausblenden AWT, Swing, JavaFX & SWT 2
M Swing jButton Text verschwindet AWT, Swing, JavaFX & SWT 2
C Swing JButton wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
stylegangsta JLabel durch Klick auf JButton einblenden AWT, Swing, JavaFX & SWT 16
stylegangsta MouseEvents aus JButton aufrufen AWT, Swing, JavaFX & SWT 3
stylegangsta JButton Transparent anzeigen AWT, Swing, JavaFX & SWT 9
stylegangsta JButton Fehelr javax.swing.ImageIcon.<init>(Unknown Source) AWT, Swing, JavaFX & SWT 24
X Swing JButton's zum JScrollPane hinzufügen geht nicht. Bitte um Hilfe. AWT, Swing, JavaFX & SWT 9
D JButton - Nur Icon anzeigen / transparenter Hintergrund AWT, Swing, JavaFX & SWT 2
S JButton-Label vergrößern AWT, Swing, JavaFX & SWT 2
J Swing Basics - JButton funktioniert nicht. AWT, Swing, JavaFX & SWT 1
L JButton mit ImageIcon/Fehlermeldung AWT, Swing, JavaFX & SWT 1
D jButton Problem, ein Rieser Button bedeckt das ganze frame AWT, Swing, JavaFX & SWT 1
L Array mit JButton, wie rausfinden auf welche JButton geklickt wurde + index des JButtons ausgeben AWT, Swing, JavaFX & SWT 4
K (GUI) JButton Farbe bei druck ändern AWT, Swing, JavaFX & SWT 3
L JButton mit Image AWT, Swing, JavaFX & SWT 5
fLooojava JButton [Focus) AWT, Swing, JavaFX & SWT 4
M JButton - Listener AWT, Swing, JavaFX & SWT 1
L JButton flackern - Programm hängt sich auf AWT, Swing, JavaFX & SWT 3
L JButton - Größe anders als erwartet AWT, Swing, JavaFX & SWT 2
1 JButton nach Klick ausblenden AWT, Swing, JavaFX & SWT 6
X Swing 1 JButton bedeckt meine ganze Frame aber Warum? AWT, Swing, JavaFX & SWT 2
S Größe und Farbe vom JButton festlegen AWT, Swing, JavaFX & SWT 2
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
J JButton neu zeichnen lassen AWT, Swing, JavaFX & SWT 9
S JButton u. Label auf paint-Methode AWT, Swing, JavaFX & SWT 1
HoloYoitsu Swing JButton in verschiedenen Winkeln drehen AWT, Swing, JavaFX & SWT 0
J vocab1 = new JButton(""+voc1.get(nr).toString()+""); AWT, Swing, JavaFX & SWT 16
A JButton wird bei ActionListener nicht "angenommen" AWT, Swing, JavaFX & SWT 7
BRoll JButton Text nicht ausblenden ("...") AWT, Swing, JavaFX & SWT 2
S Swing Rückmeldung für JButton AWT, Swing, JavaFX & SWT 4
R AWT JLabel oder JButton aktualisieren AWT, Swing, JavaFX & SWT 1
L JButton im Frame fest verankern AWT, Swing, JavaFX & SWT 0
M Swing Mix JComboBox - JButton? AWT, Swing, JavaFX & SWT 6
U Event Handling JButton Actionevent: starte Spiel AWT, Swing, JavaFX & SWT 4
E JButton füllt ganzes JPanel auf AWT, Swing, JavaFX & SWT 6
P Verbuggte custom JButton unter Windows AWT, Swing, JavaFX & SWT 9
W Swing JButton lässt sich nicht anzeigen AWT, Swing, JavaFX & SWT 8
Kandum Swing JButton - onclick -> Grafikfehler AWT, Swing, JavaFX & SWT 2
R JButton durch Enter auslösen AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben