Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
import java.awt.*;
import java.awt.event.*;
class YesNoDialog extends Dialog {
public boolean m_bResult;
public YesNoDialog(Frame owner,String msg){
super(owner,"",true);
setBackground(Color.lightGray);
setLayout(new BorderLayout());
setResizable(false);
Point p = owner.getLocation();
setLocation(p.x,p.y);
add(BorderLayout.CENTER,new Label(msg));
Panel buttonPanel = new Panel();
buttonPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
add(BorderLayout.SOUTH,buttonPanel);
Button b = new Button("YES");
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
m_bResult = true;
dispose();
}
});
buttonPanel.add(b);
b=new Button("NO");
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
m_bResult = false;
dispose();
}
});
buttonPanel.add(b);
pack();
setVisible(true);
}
}
public class example extends Frame{
public example(){
setSize(400,300);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
YesNoDialog dlg = new YesNoDialog(example.this,(Frame)e.getSource(),
"Soll das Programm beendet werden?");
if(dlg.m_bResult)
dispose();
}
});
setVisible(true);
}
public static void main(String[]args){
new example();
}
}
Hi,
oben das komplette kleine Programm... ich habe nur eine Frage:
YesNoDialog dlg = new YesNoDialog(example.this,//(Frame)e.getSource(),
"Soll das Programm beendet werden?");
... erzeugt ein neues Objekt dlg der Klasse YesNoDialog. aber ich verstehe nicht was übergeben wird. Ich weiss es muss ein Vaterfenster erzeugt werden. Aber wie geschieht das hier...
ich kenne this nur für den Konstruktoren und gleichlautenden Objektvariablen.
Was macht (Frame)e.getSource? Hier jetzt als Kommentar gesperrt.
Danke!
Also erst einmal ist der Aufruf scheinbar falsch. Die Klasse erwartet nur zwei Parameter (public YesNoDialog(Frame owner,String msg){) du übergibst aber drei!
this zeigt immer auf die aktuelle Instanz (also hier eine Instanz von example!)
e.getSource liefert das Objekt welches das Event ausgelöst hat!
deshalb ist das getSource auch als Kommentar gesperrt. Habe das Programm als Übung so übernommen.
Also ist ist das Frame von example das Vaterfenster für Dialog? Richtig?!
noch einmal zu
(Frame)e.getSource(); liefret das Objekt das den event ausgelöst hat. okay. Warum das (Frame)??