Kleine Frage zum öffnen eines Fensters

Dumbeldore

Mitglied
Sehr geehrte Leute,

ich habe derzeit einen kleinen Chat gebaut und möchte in diesem die Funktion /news richtig einbauen...
Also die Funktion an sich habe ich bis jetzt drin, nur möchte ich, das wenn es eine neue News gibt, das das PopUp, welches dadurch erzeugt wird beim nur einmal beim Betreten des Chats geöffnet wird und nicht immer wieder.
(Könnt ihr mir folgen?)

Bitte helft mir, ich hab echt keinen Plan, was genau ich machen kann.

Gruß
Sascha
 
Wie sieht den der Quelltext für das Popup-Fenster aus?

Weil so würde ich sagen, das du eine Schleife um das Öffnen des Popup-Fensters gemacht hast.
 
Hallo Sascha,

wenn ich Dich richtig verstanden habe, dann soll jede Neuigkeit nur einmal angezeigt werden?
In dem Fall würde ich einen Zeitstempel mitschicken, den sich der Client merkt. Und nur wenn
eine Nachricht mit einem neueren als dem gespeicherten eintrifft, wird diese auch angezeigt.

Ich hoffe das war, was Du gemeint hast.

VG ROlf
 
else if (cmd.equals("news")) {
String title = "+++ SaRoPaRo-Chat News Ticker +++";
StringBuilder news = new StringBuilder();

news.append("°-°");
news.append("_News (1) von °>_hAkkon|/serverpp \"|/w \"<° an alle °B°Mitglieder°K°_#Liebe SaRoPaR-Freunde,##zu erst einmal möchte ich euch alle Herzlich zur Eröffnung des neuen SaRoPaRo-Chats begrüßen.##Kommen wir zu den _Neuigkeiten_:#_Chatbefehle:_#/knuddelz #/news##_Chatspiele_#Mafia##Ich wünsche euch sehr viel Spaß mit den neuen Features und Funktionen.##Euer °>_hAkkon|/serverpp \"|/w \"<°##geschrieben am 25.04.2011 18:50");

Popup popup = new Popup(title, title, news.toString(), 575, 405);
Panel panel = new Panel();
panel.addComponent(new Button(" OK "));
popup.addPanel(panel);
client.send(popup.toString());
}

Hallo nochmal, das hier ist der Code für das Fenster. Erzeugt wird es aber in einer anderen .class, da ich sogesehen nur ein Popup habe, was immer wieder einen neuen Inhalt zeigt.
 
Eine andere Lösungsmöglichkeit: ein Flag setzen (boolean), welches nach dem ersten Anzeigen des Popups auf false gesetzt wird und danach wird dann vorher das Flag abgefragt und das Popup eben nicht mehr angezeigt.
 
Wie genau stelle ich sowas fertig?

Und da tut sich bei der Gelegenheit noch ein Problem auf....
Der USER soll es bei jeder neuen News-Nachricht automatisch geöffnet bekommen beim eintreten, und wenn der USER ok klickt, soll es NUR BEI IHM nicht mehr kommen, alle, die noch nicht auf Okay geklickt haben (also das News Fenster geschlossen haben, oder noch nicht wieder Online waren, bei denen soll es also noch nicht ausgeschaltet worden sein...
 
Hmm, ich versteh das jetzt nicht so richtig. Soll der User nun bei jeder neuen News das Popup bekommen, oder nur einmal, wenn er eintritt? Und wenn der User eine eigene Clientanwendung hat, kann doch dort für ihn das Flag gesetzt werden.
 
Also wenn wir die News rausgeben, dann soll der USER sie 1 mal automatisch geöffnet bekommen. Druckt er auf Okay, wird es für Ihn nicht mehr geöffnet. So meine ich das. Und wenn wir eine neue News schreiben, dann wird es wieder nur 1 mal angezeigt und dann druckt er wieder Okay und dann wird es für IHN wieder nicht mehr angezeigt bis zur neuen News.
 
Ich würde (persönlicher Geschmack) abraten, dass sich automatisch die News öffnet. Lieber erst anzeigen, dass es eine gibt und bei Knopfdruck öffnen. Sowas kann teilweiße echt nerfen.
Hast du einen Server? Wenn ja, würde ich es so lösen:

News zu Objekten machen. String mit der Nachricht, und eine Liste mit Usern, die die News bereits gelesen haben. Beim Einloggen prüfst du, welcher User die News bereits empfangen hat, indem du die News und die User in den Listen durchrennst. Findet er eine News, wo der User noch nicht eingetragen ist, schickt er sie zum Clienten und trägt ihm ein, sonst schickt er ihm eventuell, dass es keine neue gibt.

Könnte man auch anderstrum machen, dass die User-Objekte Informationen über die News beinhalten. Das würde vermutlich auch schneller gehen, wenn z. B. drinnensteht "private int lastReceivedNews = 17", und er dann einfach schaut ob es eine News mit der ID 18 gibt. Aber wohl Geschmackssache, imho geht persönliche Lesbarkeit über Geschwindigkeit.
 
Zuletzt bearbeitet:
Das ist eine Wunderbare Idee mit dem Button. Ich werde mit meinem Bruder (Und ProjektMitLeiter) besprechen 🙂 Wäre zumal eine viel einfachere Lösung als das Popup ganz zu öffnen
 
...
News zu Objekten machen. String mit der Nachricht, und eine Liste mit Usern, die die News bereits gelesen haben. Beim Einloggen prüfst du, welcher User die News bereits empfangen hat, indem du die News und die User in den Listen durchrennst. Findet er eine News, wo der User noch nicht eingetragen ist, schickt er sie zum Clienten und trägt ihm ein, sonst schickt er ihm eventuell, dass es keine neue gibt.

Listen mitzuführen halte ich ab einer gewissen Anzahl User/Nachrichten nicht für praktikabel.

...
Könnte man auch anderstrum machen, dass die User-Objekte Informationen über die News beinhalten. Das würde vermutlich auch schneller gehen, wenn z. B. drinnensteht "private int lastReceivedNews = 17", und er dann einfach schaut ob es eine News mit der ID 18 gibt. Aber wohl Geschmackssache, imho geht persönliche Lesbarkeit über Geschwindigkeit.

Das entspricht sinngemäß meinem Vorschlag von oben. Natürlich kann man auch an Stelle des Zeitstempels
eine ID mitgeben. Ein Zeitstempel hätte allerdings den Vorteil, dass man ihn dem User direkt anzeigen kann,
womit für ihn ersichtlich wäre, wie aktuell die Nachricht ist.


Die Idee, dass der User einen Button drücken muss, bevor die Nachricht angezeigt wirde, finde ich auch gut.

VG ROlf
 

Zurück
Oben