Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Banana-Coding.com - Java Knuddels Emulator. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

11

20.04.2012, 14:39

Ich würde auch mitmachen.

Nur bin ich nicht sooo gut in Java.

12

20.04.2012, 16:36

- Deleted -

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Blizzard« (19.02.2013, 12:35)


13

20.04.2012, 21:27

natürlich gibt es einiges zu besprechen unter anderem, wie die lizens dafür später aussehen soll.
wer was macht und und und ;)

14

26.04.2012, 14:10

Ich würde ne Creative Commons Lizenz vorschlagen. Beinhaltet dann Namensnennung und je nachdem welche wir benutzen kommerzielle Nutzung.
Und auf Swing aufbauen ist denke ich eine gute Idee.

15

03.05.2012, 11:49

Hab mich auch mal hingesetzt und ein Chat Fenster ala Knuddels gecodet läuft auch schon ganz gut :D


Hab mir dafür die JTextPane Klasse etwas angepasst und benutze html für Farben und Co.
Als nächstes werde ich mich mit der Userliste beschäftigen wofür ich wohl auch html benutzen werde

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »uncopyable« (03.05.2012, 11:59)


16

03.05.2012, 19:16

Sieh schonmal sehr gut aus.

Mich würde mal intressieren, wie es
copyrightmäsig aussieht. Der Server und Client werden dann 100% selbst
geschreiben sein, kann Knuddels was dagegen sagen?
Schnittstellen sind NICHT schützbar, denn sonnst könnte man auch keine Ersatzteile in Maschinen von fremden Firmen einbauen.

Mich
intresseiert auch der Gedanke, was ihr davon haltet, den Client nicht
100 nachzubilden es gibt einige Sachen, die stören, bzw fehlen:
z.B.
das man recht einen anklicken, kann um privat zu schreiben, das passiert
bei mir ständig ausversehen, wen ich das hauptfenster on top hole
wenn
ich mit mehreren privat schreibe, übersehn ich das, wenn mich ein neuer
anschreibt da die kleinen fenster das channelfenster überdecken

Und auch wenn der Topic die Reproduktion ist, wie wär es mit was komplett eigenes?

17

03.05.2012, 20:30

Sodele. Benutzt ihr nur HTML oder auch das StyledDocument-Objekt?

Achso. Btw:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JTextPane;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Mentos
 */
public class KPanel extends JTextPane {

    private StringBuilder contentBuilder = new StringBuilder("<html></html>");
    
    private Image backgroundImage null;
    private BACKGROUNDPOSITION position BACKGROUNDPOSITION.CENTERED;
    
    private Color backgroundColor Color.BLUE;
    
    public KPanel() {
        setBackground(new Color(0,0,0,0));
        setContentType("text/html");
    }
    
    public void setBackgroundImage(String imagePathBACKGROUNDPOSITION position) {
        if (imagePath.startsWith("http://")) {
            try {
                /*String parameter = java.net.URLEncoder.encode(imagePath.substring(imagePath.lastIndexOf("/") + 1), "UTF-8");
                imagePath = String.format("%s/%s", imagePath.substring(0, imagePath.lastIndexOf("/")), parameter);*/
                backgroundImage Toolkit.getDefaultToolkit().getImage(new URL(imagePath));
            } catch (Exception x) {
                Logger.getLogger(getClass().getName()).log(Level.WARNINGString.format("Couldn't load Background-Image: %s\r\n%s"imagePath,
                        x.toString()));
            }
        } else {
            try {
                backgroundImage Toolkit.getDefaultToolkit().getImage(imagePath);
            } catch (Exception x) {
                Logger.getLogger(getClass().getName()).log(Level.WARNINGString.format("Couldn't load Background-Image: %s\r\n%s"imagePath,
                        x.toString()));
            }
        }
        this.position position;
    }
    
    public void setBackgroundColor(Color backgroundColor){
        this.backgroundColor backgroundColor;
    }

    @Override
    protected void paintComponent(Graphics g) {
        g.setColor(backgroundColor);
        g.fillRect(00getWidth(), getHeight());
        if (backgroundImage != null) {
            switch(position)
            {
                case LEFT:
                    g.drawImage(backgroundImage00this);
                    break;
                case SCALED:
                    g.drawImage(backgroundImage00getWidth(), getHeight(), this);
                    break;
                case CENTERED:
                    g.drawImage(backgroundImage, (getWidth() - backgroundImage.getWidth(this))/2, 
                            (getHeight() - backgroundImage.getHeight(this))/2this);
                    break;
            }
        }

        super.paintComponent(g);
    }

    public void addMessage(Color nickColorString senderNickString message) {
        contentBuilder.delete(contentBuilder.length() - "</html>".length(), contentBuilder.length());
        contentBuilder.append("<b><font color="#").append(Integer.toHexString( nickColor.getRGB() & 0x00ffffff ))
                .append("">").append(senderNick).append("</font></b>: ").append(message).append("<br>");
        contentBuilder.append("</html>");
        setText(contentBuilder.toString());
    }

    public static enum BACKGROUNDPOSITION {
        LEFT,
        CENTERED,
        SCALED
    }
    
    
    //Uncool overrides
     @Override
    public void setEditable(boolean b) {
        super.setEditable(false);
    }

    @Override
    public void setOpaque(boolean isOpaque) {
        super.setOpaque(false);
    }    
}

18

04.05.2012, 15:55

Meine kpanel Klasse sieht in etwa genau so aus wie deine. Momentan habe ich damit aber ein Problem mit den Grafiken, die werden bei jedem einfügen einer neuen Nachricht neu geladen.

Vielleicht hat ja einer von euch das selbe Problem und schon eine Lösung dafür gefunden.

Gibt ja anscheinend keine Möglichkeit Html an das Ende des JTextPanel Documents einzufügen so das nicht das ganze Document neu geladen werden muss.

PS: Der Beitrag wurde mit dem Handy geschrieben und könnte somit ungewollte Rechtschreibfehler mit sich führen. :D

19

04.05.2012, 16:13

Ich würd ja gerne mein Quellcode posten, aber darf ja nicht :D
Deine Nachricht ist zu lang. Es stehen maximal 10 000 Zeichen zur Verfügung.


Ich nutze in meinem Quellcode einfach eine eigene Klasse mit eigener PaintMethode. Abgeleitet von JComponent.

Localhost

Ehemaliger Supporter

Beiträge: 345

Wohnort: 127.0.0.1

  • Private Nachricht senden

20

04.05.2012, 16:50

Lad's woanders hoch?!
No support via message.

"Der gute Programmierer ist nicht der, der keine Fehler macht, sondern der, der seine Fehler rasch findet und behebt."