PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java Applets MIT Source-Code...


MadMan2k
2003-03-27, 21:11:37
Ich möchte ein Navigations-Applet schreiben, welches wie das auf www.atelco.de (java-menue) aussieht...
bloß habe ich absolut keine Ahnung wie die das gemacht haben. (ich vermute tree mit nem timer)
Also hab ich mal versucht sowas ähnliches mit Source-Code zu finden, worauf ich dann aufbauen kann - aber pustekuchen: entweder es ist kein Quellcode dabei oder die wollen Geld dafür...
Weiß jemand vielleicht WIE dieses Applet aufgebaut ist bzw. wo man den Quelltext für ein ähnliches findet??

stabilo_boss13
2003-03-27, 21:48:32
Vielleicht ist da was dabei:

http://www.programmersheaven.com/zone13/cat630/index.htm ;)
http://www.dziners.com/PopUpMenu.html

ethrandil
2003-04-01, 20:46:25
Selbermachen :)

Graphics.drawRect(int x, int y, int width, int height)
Graphics.drawString(String str, int x, int y)

:bäh::bäh:

ethrandil
2003-04-01, 20:50:21
Ehrm, das andere menu (oben) und das navigationsmenü auf der refhten taste istr doch dhtml + java[b]script|/b] oder?

MadMan2k
2003-04-02, 10:04:01
du kannst das menü links auch auf Java umstellen.
Einfach über dem Menü auf den Button "Java" klicken.... ;)

hier ein link dazu: http://www.atelco.de/44X-j51QkKsv1i/1000/home.jsp?profil.vmode=3 (bin mir aber nicht sicher ob der funzt)

ethrandil
2003-04-02, 19:21:40
genau das meinte ich =)

bis auf die Animation sollte das doch einfach sein ...

MadMan2k
2003-04-04, 13:24:38
jo, das ist mit Java gemacht...
aber echt hst du: es geht auch mit Java SCRIPT - vielleicht auch einfacher, aber ich will es unbedingt mit Java machen, da ich grade Java lerne...

ich hab das jetzt alles bis auf die Animation mit nem JTree nachgebaut, und muss sagen: so leicht ist es nun auch wieder nicht (vielleicht hab ich´s mir auch zu schwer gemacht, da ich alles parametrisiert habe..)
Feht nur noch dia Animation...

PS: sobald ich das Applet eingebunden habe, stelle ich einen Vergleichslink rein > be tunded ;)

ethrandil
2003-04-04, 15:47:49
Animationen in Java? :kotz:
okay ... nimm dir ein BufferedImage und render da rein. am ende kannst dus dann Rendern.
Ne andere Frage ist, wie man die Animation steuert und verhindert, dass sich schriftzüge überlappen ...

Normalerweise nimmt man für animationen einen Timer, davon würde ich hier abraten, da man weitere klicks vferhindern sollte, während das ganze animiert wird.

bau doch ne unterklasse für jeden Node, der könnte dann ne funktion haben, die ihn versetzt zeichnet.

Du könntest ein bufferedImage rendern und das dann verschoben rendern, dann fällt keine weitere änderung auf, zB:

class Node extends Canvas{
int verschiebung = 0;
Nodes[] subNodes = null; //später initialisieren!!
public void animate(){
... //animationcode goes here, like:
while(animating){
++this.verschiebung; //grüße an zeckensack *g*
this.repaint();
}
}
public void paint( Graphics g){
if(animating)
g.drawImage(paint(verschiebung), 0, 0, Color.WHITE, this);
else
g.drawImage(paint(), 0, 0, Color.WHITE, this);
}
public BufferedImage paint(){
................ // da musst du dein Node rendern.
}
public Image paint(int yverschiebung){
BufferedImage img = (BufferedImage)this.paint();
return img.getSubimage(0/*x achse*/,yverschiebung, img.getWidth(), img.getHeight());
}
}


Was spricht dagegen?
ich hab mir das nur grade mal so ausgedacht, angaben ohne gewähr =)

MadMan2k
2003-04-04, 19:06:53
oha! ich versuch es zu verstehen, wenn ich mehr Zeit hab, den bisher hab ich weder was mit graphics noch mit nem BufferedImage gemacht.
Ehrlichgesagt lern ich Java erst seit 2Wochen - und das ist jetzt auch vorbei da mein Praktikum um ist... ;(
naja, das was ich schon mit dem Tree gemacht hab, kann man hier bewundern: http://www.madman2k.de.vu

dazu hätt ich gleich auch mal ne Frage: wie mach ich es, dass immer nur ein knoten geöffnet sein kann (wie bei der Atelco Seite)??
Ich weiss, dass es mit dem Befehl gehen muss:


tree.collapseRow(tree.getRowForLocation(x, y))


dann bräuchte ich noch ne Schleife:


for(i=1, i<maxrow+1, i++)
{
if(tree.isExpandeded)
{
tree.getRowForLocation(x, y); // wie krieg ich x und y raus??
Vector v = new Vector(); // geht das auch ohne Vector & einfacher?
v.addElement(); // wie übergeb ich x und y??
}
}


dann den Vector mit ner Schleife abarbeiten und alle enthaltenen Zeilen schliessen...
geht das so???

ethrandil
2003-04-04, 20:34:46
Hmm, nicht schlecht, wirklich =)

Du sprichst immer von tree, meinst du TreeModel, wenn ja welches ?

sagen wir mal ja =)

dann kannst du einen Listener für Tree-Operationen hinzufügen (kennst du das Event-modell von java?):

void treeNodesChanged(TreeModelEvent e)
void treeNodesInserted(TreeModelEvent e)
void treeNodesRemoved(TreeModelEvent e)
void treeStructureChanged(TreeModelEvent e)

hast du sowas? (ich kenn mich mit trees net aus ...)

und: wenn du schon vergeblich gesucht hast, gib doch deinen Source-code frei!