Hallo,
ich bin gerade dabei ein kleines Programm zu schreiben. Ziel ist es, dass ein Text in ein Textfeld geschrieben wird und dieser auf Richtigkeit überprüft wird. Sollte dieser falsch sein, wird eine Fehlermeldung geöffnet.
Hier wird es überprüft und ggf. die Meldung geöffnet:
Hier wird die Dialogbreite berechnet, welche je nach Textlänge angepasst werden soll:
Schließlich wird die Meldung angezeigt:
Die Meldung soll automatisch nach einer bestimmten Zeit wieder verschwinden:
Mein Problem ist nun, dass die Fehlermeldung zwar an der richtigen Stelle erscheint und auch nach der Zeit wieder geschlossen wird, jedoch öffnet sich nach dem Schließen sofort das gleiche Fenster noch einmal und bleibt auch sichtbar. Es lässt sich nur durch drücken auf X schließen. Wisst ihr, was ich falsch gemacht habe?
ich bin gerade dabei ein kleines Programm zu schreiben. Ziel ist es, dass ein Text in ein Textfeld geschrieben wird und dieser auf Richtigkeit überprüft wird. Sollte dieser falsch sein, wird eine Fehlermeldung geöffnet.
Hier wird es überprüft und ggf. die Meldung geöffnet:
Java:
if(modelE.getErrorStatus() != null){
modelF.berechneBreite(modelE.getErrorStatus());
viewF.setVisible(true);
Hier wird die Dialogbreite berechnet, welche je nach Textlänge angepasst werden soll:
Java:
public class ModelFehlermeldung extends Observable {
int laenge;
double faktor = 13.871;
double rechnung;
int dialogBreite;
String mitteilung;
public void berechneBreite(String mitteilung){
this.mitteilung = mitteilung;
laenge = mitteilung.length();
rechnung = laenge * faktor;
dialogBreite = (int) Math.round(rechnung);
setChanged();
notifyObservers(this);
}
public int getDialogBreite(){
return this.dialogBreite;
}
public String getMitteilung(){
return this.mitteilung;
}
}
Schließlich wird die Meldung angezeigt:
Code:
private JPanel pnlFehlermeldung;
private int dialogBreite;
private JLabel lblNachricht = new JLabel();
public ViewFehlermeldung(Control control){
setTitle("Fehlermeldung");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setName(StaticsEingabe.VIEW_FEHLERMELDUNG_NAME);
pnlFehlermeldung = new JPanel();
setContentPane(pnlFehlermeldung);
lblNachricht.setHorizontalAlignment(JLabel.CENTER);
lblNachricht.setVerticalAlignment(JLabel.CENTER);
lblNachricht.setFont(new Font("text",0,25));
pnlFehlermeldung.add(lblNachricht);
addWindowListener(control);
}
@Override
public void update(Observable o, Object arg) {
// TODO Auto-generated method stub
if(arg instanceof ModelFehlermeldung){
this.lblNachricht.setText((((ModelFehlermeldung) arg).getMitteilung()));
setSize(this.dialogBreite = (((ModelFehlermeldung) arg).getDialogBreite()),100);
}
}
}
Die Meldung soll automatisch nach einer bestimmten Zeit wieder verschwinden:
Code:
public void windowOpened(WindowEvent e) {
if(e.getComponent().getName() == StaticsEingabe.VIEW_FEHLERMELDUNG_NAME){
try {
Thread.sleep(2000);
viewF.dispose();
}
catch(InterruptedException ie) {
Thread.currentThread().interrupt();
}
}
}
Mein Problem ist nun, dass die Fehlermeldung zwar an der richtigen Stelle erscheint und auch nach der Zeit wieder geschlossen wird, jedoch öffnet sich nach dem Schließen sofort das gleiche Fenster noch einmal und bleibt auch sichtbar. Es lässt sich nur durch drücken auf X schließen. Wisst ihr, was ich falsch gemacht habe?