1. #1
    Avatar von uncopyable
    Registriert seit
    19.11.2011
    Beiträge
    282
    Thanked 235 Times in 120 Posts

    Standard Popup Hindergrundbild

    Hallo,

    ich hab mal ne Frag zum Popup von Knuddels und zwar zum Hindergrundbild
    kann ich das beliebig ändern oder muss das Bild auf dem Server (http://chat.knuddels.de/pics/) liegen?

    Ich hab mir mal das zusammengestellt..

    Code:
    public class Popup { 
          public static void main(String[] args) {  
          // So geht es 
          groupChat.receive(showPopup("Test","Test","Test","pics/cloudsblue.gif"))
          // So nicht.. 
           groupChat.receive(showPopup("Test","Test","Test","http://u-hacks.net/images/uhacks/header/logo.gif")); 
          } 
    	public static String showPopup(String title, String label, String content, String pic) {
    	StringBuilder sb = new StringBuilder();
    	sb.append("k\0");
    	sb.append(title);
    	sb.append("õf\0\0\0   h¾¼ûãEl         õcgFh¾¼ûãWl         õcgFh¾¼ûãCpBNpBNl õcgFh¾¼ûãCl");
    	sb.append(label);
    	sb.append("õblgQf\0\0\0   hååÿãSl õcgFh¾¼ûããCc");
    	sb.append(content);
    	sb.append("õ~tpõsÂ,f\0\0\0   h¾¼ûi");
    	sb.append(pic);
    	sb.append("õ\0ãSpFb   OK   õdpgQf\0\0\0   h¾¼ûãããã");
    	return sb.toString();
    	}
    }
    Und wie kann ich in dem Beispiel die Hintergrundfarbe und die größe es Popups noch ändern?

    Danke schon mal im vorraus


    while( behappy() ) { code(); }

  2. #2

    Registriert seit
    06.11.2011
    Beiträge
    418
    Thanked 686 Times in 246 Posts

    Standard AW: Popup Hindergrundbild

    Du kannst es ändern, es reicht aber nicht wenn du einfach die URL des Bildes angibst. Du musst eine Änderung vornehmen, entweder in der Popup-Klasse oder in GroupChat, oder wenn dein Client auf den KRClient basiert in Context.java (wäre das einfachste).

    Wenn du weitere Einstellungen wie Hintergrundfarbe und Größe des Popups ändern willst, dann arbeitest du am besten mit Bytes. Schau dir die Klassen im Banana-Chat an, das kann man auch hier verwenden.
    Geändert von Flav (09.12.2011 um 04:10 Uhr)

  3. The Following User Says Thank You to Flav For This Useful Post:

    uncopyable (09.12.2011)

  4. #3

    Registriert seit
    06.11.2011
    Beiträge
    418
    Thanked 686 Times in 246 Posts

    Standard AW: Popup Hindergrundbild

    Ich hab das Ganze für meinen neuen Emulator nochmal neu geschrieben, etwas übersichtlicher und simpler (vorerst mit nur einer Komponente, den OK-Button zum Schließen). Breite und Höhe können den Konstruktor übergeben werden, andere Einstellungen kannst du in der Methode getBytes() anpassen.

    Code:
    /**
     *
     * @author Flav
     */
    public class PacketWriter {
    	private StringBuilder buffer;
    
    	public PacketWriter() {
    		buffer = new StringBuilder();
    	}
    
    	public void write(int v) {
    		buffer.append((char) v);
    	}
    
    	public void writeBoolean(boolean v) {
    		write(v ? 1 : 0);
    	}
    
    	public void writeShort(int v) {
    		write(v >> 8);
    		write(v);
    	}
    
    	public void writeString(String v) {
    		buffer.append(v);
    	}
    
    	public String getBuffer() {
    		return buffer.toString();
    	}
    }
    Code:
    /**
     *
     * @author Flav
     */
    public class Popup {
    	private String title, subtitle, message;
    	private int width, height;
    	private PacketWriter packet;
    
    	public Popup(String title, String subtitle, String message, int width, int height) {
    		this.title = title;
    		this.subtitle = subtitle;
    		this.message = message;
    		this.width = width;
    		this.height = height;
    	}
    
    	private void addSize(int size) {
    		packet.write(size + 'A');
    	}
    
    	private void addString(String str) {
    		packet.writeString(str);
    		packet.write(0xF5);
    	}
    
    	private void addForeground(int[] color) {
    		packet.write('f');
    
    		for (int c : color) {
    			packet.write(c);
    		}
    	}
    
    	private void addBackground(int[] color) {
    		packet.write('h');
    
    		for (int c : color) {
    			packet.write(c);
    		}
    	}
    
    	private void addFontStyle(char weight, int size) {
    		if (weight != 'p') {
    			packet.write(weight);
    		}
    
    		packet.write('g');
    		addSize(size);
    	}
    
    	private void addPanel(char layout) {
    		packet.write('p');
    		packet.write(layout);
    	}
    
    	private void addPanelSize(int width, int height) {
    		packet.write('s');
    		packet.writeShort(width);
    		packet.writeShort(height);
    	}
    
    	private void addBackgroundImage(String image, int alignment) {
    		packet.write('i');
    		addString(image);
    		packet.writeShort(alignment);
    	}
    
    	public String getBuffer() {
    		packet = new PacketWriter();
    		packet.writeString("k");
    		packet.write(0x00);
    		addString(title);
    		addForeground(new int[] { 0x00, 0x00, 0x00 });
    		addBackground(new int[] { 0xBE, 0xBC, 0xFB });
    		packet.write(0xE3);
    
    		packet.write('N');
    		packet.write('l');
    		addString(" ");
    		addFontStyle('p', 5);
    		packet.write(0xE3);
    
    		packet.write('W');
    		packet.write('l');
    		addString("        ");
    		addFontStyle('p', 5);
    		packet.write(0xE3);
    
    		packet.write('E');
    		packet.write('l');
    		addString("	       ");
    		addFontStyle('p', 5);
    		packet.write(0xE3);
    
    		packet.write('C');
    		addPanel('B');
    
    		if (subtitle != null) {
    			packet.write('N');
    			addPanel('B');
    
    			packet.write('C');
    			packet.write('l');
    			addString(subtitle);
    			addFontStyle('b', 16);
    			addBackground(new int[] { 0xE5, 0xE5, 0xFF });
    			packet.write(0xE3);
    
    			packet.write('S');
    			packet.write('l');
    			addString(" ");
    			addFontStyle('p', 5);
    			packet.write(0xE3);
    
    			packet.write(0xE3);
    		}
    
    		if (message != null) {
    			packet.write('C');
    			packet.write('c');
    			addString(message);
    			addPanelSize(width, height);
    			addBackground(new int[] { 0xBE, 0xBC, 0xFB });
    			addBackgroundImage("pics/cloudsblue.gif", 17);
    			packet.write(0xE3);
    		}
    
    		packet.write(0xE3);
    
    		packet.write('S');
    		addPanel('F');
    
    		packet.write('b');
    		addString("   OK   ");
    		addFontStyle('p', 16);
    		packet.write('d');
    		addBackground(new int[] { 0xBE, 0xBC, 0xFB });
    		packet.write(0xE3);
    
    		packet.write(0xE3);
    
    		packet.write(0xE3);
    		return packet.getBuffer();
    	}
    }
    groupChat.receive(new Popup("Titel", "Subtitel", "Nachricht", 400, 300).getBuffer());
    Geändert von Flav (17.12.2011 um 06:12 Uhr)

  5. The Following User Says Thank You to Flav For This Useful Post:

    uncopyable (14.12.2011)

  6. #4
    Avatar von uncopyable
    Registriert seit
    19.11.2011
    Beiträge
    282
    Thanked 235 Times in 120 Posts

    Standard AW: Popup Hindergrundbild

    Hallo,
    erstmal danke dafür

    Code:
    groupChat.receive(new Popup("Titel", "Subtitel", "Nachricht", 400, 300).getBytes());
    funktioniert nicht da receive() einen String verlangt.
    Fehler:
    receive(java.lang.String) in n2 cannot be applied to (byte[])

    Abhilfe:
    Code:
    groupChat.receive(new String(new Popup("Titel", "Subtitel", "Nachricht", 400, 300).getBytes()));
    Falls es noch jemand anderes gebrauchen kann


    /e gibt es beim Popup die Möglichkeit ihn in der Mitte des Bildschirms zu positionieren?
    Geändert von uncopyable (15.12.2011 um 22:02 Uhr)


    while( behappy() ) { code(); }

  7. #5

    Registriert seit
    06.11.2011
    Beiträge
    418
    Thanked 686 Times in 246 Posts

    Standard AW: Popup Hindergrundbild

    Stimmt, beim Client wird ja ein String erwartet. Statt aus den Bytes einen neuen String zu erzeugen kannst du PacketWriter aber auch erweitern, einfach eine Methode hinzufügen die den Buffer (hier der StringBuilder) als String zurück gibt.

    Ich bin mir nicht sicher, kann aber sein, dass es da noch ein optionales Byte für gibt um die Position anzugeben.

  8. The Following User Says Thank You to Flav For This Useful Post:

    uncopyable (16.12.2011)

  9. #6
    Avatar von uncopyable
    Registriert seit
    19.11.2011
    Beiträge
    282
    Thanked 235 Times in 120 Posts

    Frage AW: Popup Hindergrundbild

    Hallo,

    ich hab noch eine frage, ich würde gerne den Popup abfangen und in deiner Klasse verwenden damit ich das Design beliebig ändern kann, jedoch ohne das Popup-Packet dabei zu beschädigen.

    Code:
    	public String parseInput(String packet) {
    	String[] tokens = packet.split("\0");
     
               if (tokens[0].equals("k")) {
                   if (tokens[1].contains("Who")) {
                       // - ToDo
                       // Popup auslesen/bearbeiten
                       // Ich hab es schon mit Regex/Replace
                       // versucht jedoch hab ich dabei das Packet 
                       // beschädig...
                       groupChat.receive(new String(new Popup(ausgelesener Titel.., "ausgelesene Überschrift..", "ausgelesener Inhalt..", 460, 350).getBytes()));
                       return null;
                   }
               }
    Geändert von uncopyable (17.12.2011 um 14:40 Uhr)


    while( behappy() ) { code(); }

  10. #7

    Registriert seit
    06.11.2011
    Beiträge
    418
    Thanked 686 Times in 246 Posts

    Standard AW: Popup Hindergrundbild

    Das hängt ganz davon ab wie du Titel, Subtitel und Nachricht liest, die Bytes vor und nach den Strings müssen entfernt werden.

  11. The Following User Says Thank You to Flav For This Useful Post:

    uncopyable (18.12.2011)

Ähnliche Themen

  1. Popup Handlin KNLib
    Von Sploxfreak im Forum Sourcecode
    Antworten: 3
    Letzter Beitrag: 17.06.2012, 19:19
  2. [Java] Popup
    Von Flav im Forum Sourcecode
    Antworten: 7
    Letzter Beitrag: 27.05.2012, 13:00
  3. Schützling annehmen - Popup
    Von Devon im Forum Knuddels Allgemein
    Antworten: 4
    Letzter Beitrag: 12.12.2011, 21:51
  4. Popup Jugendschutztest 1 und 2
    Von AFU im Forum Knuddels Allgemein
    Antworten: 0
    Letzter Beitrag: 11.12.2011, 13:14
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.