
MrRock
Mitglieder-
Gesamte Inhalte
19 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von MrRock
-
OK danke, wenn es bei dir funktioniert dann ist es wohl ein Bug hinsichtlich meines Systems. Ich werde mal weiterforschen, ansonsten wird dieses Feature wohl nicht in das neue Release eingehen. Und ja so wie die FrameController Klasse hier gepostet ist funktioniert es nicht ganz. Wie du siehst habe ich ziemlich viel auskommentiert, also schon jede Menge wunderliches ausprobiert. Das ganze sollte (und war ja auch anfangs so) nur wie bei dir in den implementierten DnD-Methoden stattfinden. Also gut...dann ist dass auf Grund eines noch nicht zu identifizierenden Bugs nicht zu lösen und dieser Thread kann geschlossen werden. Falls jemand das selbe Problem hat bitte eine PN an mich. Vielen Dank nochmal Dragon8.
-
Danke Dragon8, aber deine Variante funktioniert leider genauso wie meine. Nämlich garnicht. Auch bei deinen Klassen passiert das gleiche wie bei mir, ein dragExited() scheint das Objekt zu verkleinern, doch auf dem Bildschirm hat es noch die selbe Größe. Windows scheint es nicht richtig zu zeichnen. Wie gesagt ein Shortcut drunter gelegt läßt dann die Teile des Fensters die eigentlich nicht mehr da sein dürften auch tatsälich wieder verschwinden. Selbst wenn das Programm längst terminiert ist, scheint immernoch eine Art Ghost auf dem Bildschirm zu sein. Das muss doch an Windows liegen, oder? Theoretisch ist deine SizeAnimator Klasse ähnlich wie meine. Deine erweitert die Timer Klasse und meine startet ein Runnable Objekt, welches die entsprechende Aufgabe mittels SwingUtilities.invokeLater() genau wie ein Timer durchführt. Animator Klasse: import java.awt.Frame; public class Animator { public static final int ANIMATE_WIDTH_ENLARGE = 0x000001; public static final int ANIMATE_WIDTH_SHRINK = 0x000002; public static final int ANIMATE_HEIGHT_ENLARGE = 0x000003; public static final int ANIMATE_HEIGHT_SHRINK = 0x000004; public static final int ANIMATE_COMPONENTS_ENLARGE = 0x000010; public static final int ANIMATE_COMPONENTS_SHRINK = 0x000011; private static RAnimatorSize runnable; static boolean isAnimating = false; public static void setAnimation(final int animation, Frame frame, final int value) { switch (animation) { case (Animator.ANIMATE_WIDTH_ENLARGE): { runnable = new RAnimatorSize(frame, value, 1); break; } case (Animator.ANIMATE_WIDTH_SHRINK): { runnable = new RAnimatorSize(frame, value, -1); break; } } } public static void start(final int speed, final int delay) { runnable.setSpeed(speed); runnable.setDelay(delay); SwingUtilities.invokeLater(runnable); //EventQueue.invokeLater(runnable); //Thread thread = new Thread(runnable); //thread.start(); } public static boolean isAnimating() { return Animator.isAnimating; } } und die RAnimatorSize Klasse: import java.awt.Frame; public class RAnimatorSize implements Runnable { private int delay; private int speed; private Frame window; private int width; private int step; public RAnimatorSize(Frame frame, final int width, final int step) { this.window = frame; this.width = width; this.step = step; } public void setDelay(final int delay) { this.delay = delay; } public void setSpeed(final int speed) { this.speed = speed; } public void run() { Animator.isAnimating = true; synchronized (this) { try { this.wait(delay); } catch (InterruptedException e) { e.printStackTrace(); } } for (int counter = this.step; counter <= width;) { int xCoordinate = (counter % (this.step*2) == 0) ? window.getX()- this.step : window.getX(); window.setBounds(xCoordinate, window.getY(), window.getWidth() + this.step, window.getHeight()); synchronized (this) { try { this.wait(speed); } catch (InterruptedException e) { e.printStackTrace(); } } counter+= Math.abs(this.step); } Animator.isAnimating = false; } } Wie gesagt ich glaube ja nun schon fast das es an der "bescheidenen" Kommunikation der DnD Events mit Windows und seinem (meinem) Graphiksystem liegt.
-
Danke für die Antworten! Ich dachte das Prinzip wäre klar geworden als ich die Animation Klasse erwähnt habe, denn die macht nicht nur ein einfaches setSize(). Wie der Name schon sagt, wird das Fenster Schritt für Schritt auf die gewünschte Größe vergrößert. Eine Animation eben. Also z.B. von 100 auf 120, aber eben alle 100 Millisekunden um 1. Ein SwingUtilities.invokeLater() wird in der Animation Klasse realisiert. Auch das direkte zurückgeben in den EDT mit EventQueue.invokeLater() bringt das selbe Ergebnis. Selbst wenn der Drop außerhalb des Fensters beendet wird, wird das Fenster nur teilweise auf die richtige Größe zurück animiert. Das sieht dann sehr seltsam aus: Wenn ich dann aber einen Desktop-Link nahe des Fenster ablege, so daß er vom System unterhalb des Fensters positioniert wird, wird das Fenster wieder richtig dargestellt (neu gezeichnet?). Es liegt irgendwie am DnD Event-Dispatching denke ich, denn wie gesagt wenn ich das ohne DnD nur mit mouseEnter() bzw. mouseExited realisiere funktioniert es wunderbar. Weitere Ideen?
-
Hallo, meine Umgebung ist folgende: Windows XP Pro SP3 JRE 1.6.0_21 CrossPosting Hinweis: ich habe das ganze auch bei tutorials.de und java-forum.org gespostet Und ich habe folgendes Problem (egal ob AWT oder SWING): ich habe ein DnD von Datein außerhalb meiner Anwendung (z.B. %DESKTOP%\datei.txt) auf das Hauptfenster meiner Anwendung realisiert. Das funktioniert alles optimal. Nun möchte ich aber das das ganze auch visulalisiert wird, sprich ich möchte mein Fenster animieren, wenn ein dragEnter() bzw. ein dragExit() stattfindet. Z.B. soll das Fenster bei einem dragEnter() verbreitert und bei einem dragExit() wieder verkleinert werden. Das scheint aber nicht sauber zu funktionieren. Die Animation beim dragEnter() funktioniert sauber. Beim dragExit() jedoch wird zwar das Fenster verkleinert, jedoch scheint das nicht bis "Windows" durchzudringen, da eine Art Schatten bzw. Ghost des Fensters immernoch zu sehen ist. Wenn ich die Animation (ohne DnD) nur über mouseEnter() bzw. mouseExited() realisiere funktioniert es wunderbar. Alles wird korrekt gezeichnet. Nun dachte ich mir ich feuere einfach ein MouseEvent bei dragEnter() und dragExit() ab. Naja so leicht ist es nun auch wieder nicht. Es scheint also an der noch stattfindenden DnD Operation zu liegen, die bestimmte Events blockiert. Ja ich weiß... EventQueue etc. Aber ich kann genau 1 MouseEvent dispatchen während eines DnD. Egal ob MouseEvent.MOUSE_PRESSED oder MouseEvent.MOUSE_EXITED etc., es wird immer nur ein MouseEvent.MOUSE_ENTERED dispatched. Ich habe nirgends etwas darüber gefunden wie DnD genau abläuft, und warum bestimmte Events zum Teil blockiert werden. Ich denke mal ein DnD auf ein DropTarget ist ein MouseEvent. Wenn der DnD also in ein DropTarget "entered" und solange der Drop nicht abgeschlossen ist ist es nur ein MouseEvent.MOUSE_ENTERED. Und den kann man auch nur genau einmal per Hand weiter-dispatchen!? Wie kann ich die Animation sauber realisieren. Habt ihr Ideen? Ein händisches repaint aller Komponenten habe ich auch schon probiert. Evtl. aber an der falschen Stelle!? Hier das Fenster: public class FrameController implements MouseListener, DropTargetListener { private static FrameController self; public static synchronized FrameController getInstance() { if (self == null) { FrameController.self = new FrameController(); return FrameController.self; } return FrameController.self; } private Frame frame; private boolean isDragAndDropEvent; public void show() { frame = new Frame(); frame.setUndecorated(true); frame.setBounds((int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth()/2-50),0,100,40); frame.addMouseListener(this); frame.add(new Label("TEST")); frame.setDropTarget(new DropTarget(frame, this)); frame.setVisible(true); } @Override public void mouseClicked(MouseEvent e) { //Point mousePointer = frame.getMousePosition(true); //frame.dispatchEvent(new MouseEvent(frame, MouseEvent.MOUSE_EXITED, GregorianCalendar.getInstance().getTimeInMillis(), MouseEvent.BUTTON1_DOWN_MASK, mousePointer.x, mousePointer.y, MouseEvent.BUTTON1, false)); } @Override public void mouseEntered(MouseEvent e) { Animator.setAnimation(Animator.ANIMATE_WIDTH_ENLARGE, frame, 40); Animator.start(1, 100); } @Override public void mouseExited(MouseEvent e) { Animator.setAnimation(Animator.ANIMATE_WIDTH_SHRINK, frame, 40); Animator.start(1, 100); } @Override public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent e) { } @Override public void dragEnter(DropTargetDragEvent dtde) { this.isDragAndDropEvent = true; Point mousePointer = frame.getMousePosition(true); //docklet.dispatchEvent(new MouseEvent(frame, MouseEvent.MOUSE_DRAGGED, GregorianCalendar.getInstance().getTimeInMillis(), MouseEvent.BUTTON1_DOWN_MASK, mousePointer.x, mousePointer.y, MouseEvent.BUTTON1, false)); this.mouseEntered(new MouseEvent(frame, MouseEvent.MOUSE_ENTERED, GregorianCalendar.getInstance().getTimeInMillis(), MouseEvent.BUTTON1_DOWN_MASK, mousePointer.x, mousePointer.y, MouseEvent.BUTTON1, false)); } @Override public void dragExit(DropTargetEvent dte) { //dte.getDropTargetContext().dropComplete (true); //Point mousePointer = frame.getMousePosition(true); //docklet.dispatchEvent(new MouseEvent(frame, MouseEvent.MOUSE_EXITED, GregorianCalendar.getInstance().getTimeInMillis(), MouseEvent.BUTTON1_DOWN_MASK, mousePointer.x, mousePointer.y, MouseEvent.BUTTON1, false)); this.mouseExited(null); /* SwingUtilities.invokeLater(new Runnable(){ @Override public void run() { Point mousePointer = frame.getMousePosition(true); //docklet.dispatchEvent(new MouseEvent(frame, MouseEvent.MOUSE_DRAGGED, GregorianCalendar.getInstance().getTimeInMillis(), MouseEvent.BUTTON1_DOWN_MASK, mousePointer.x, mousePointer.y, MouseEvent.BUTTON1, false)); FrameController.getInstance().mouseExited(null); } }); */ } @Override public void dragOver(DropTargetDragEvent dtde) { // TODO Auto-generated method stub } @Override public void drop(DropTargetDropEvent dtde) { // TODO Auto-generated method stub } @Override public void dropActionChanged(DropTargetDragEvent dtde) { // TODO Auto-generated method stub } } Die Animation.java Klasse ist eigentlich zum Verständnins nicht wichtig, da sie nur einen neuen Thread öffnet in dem die Animation abgearbeitet wird. Wie gesagt über Mouse Events geht es wunderbar. Falls ihr sie doch sehen wollt einfach bescheid geben. So... danke schonmal für jegliche Hinweise.
-
Danke dort hat man mir auch schon ein paar hinweise zum EDT gegeben, wie und wann Oberflächen gezeichnet werden. Danke Dir erstmal! Wenn du noch Performance hinweise hast auch generell...dann bitte! Höre gern zu! Gruß
-
Siehst Du! Das dauert doch viel zu lange oder? Ok, kommt wahrscheinlich auch auf die Priorität der Laufzeitumgebung an!? setVisible(true) war falsch platziert, hast Du recht! Hast Du eine Ahnung warum mein vorheriger Versuch mit dem Lade-JWindow nicht funktioniert hat. Ich wollte das Laden des JDialog in einem extra JWindow anzeigen. Das JWindow hab ich im Konstruktor des JDialog erstellt, dann den JDialog erstellt und mit Daten gefüllt und dann das JWindow entfernt. Es wurde aber nur eine weiße Fläche in der Größe des JWindow angezeigt. Das Erstellen des JDialogs hat also das Erstellen des JWindow geblockt, obwohl die Methode erst nach der der jLoadWindowAnzeigen()-Methode steht. Werden die Methoden nicht nacheinander abgearbeitet?
-
Wow, danke für den Hinweis über die Action-Map mit dem Interface. Also das geht daher so schnell weil ich den Dialog schon beim Aufruf von BrowserChooser erstelle. Wie gesagt ich habs schon geändert. Wie lange dauert es denn bei dir bis das Docklet(BrowserChooser) geladen wird und sichtbar wird?
-
Also mein Source ist höllisch lang (wie gesagt alles in einer .java, ohne Trennenungen) Ich geb dir mal den Link zu meinen Sourcen. Den Dialog findest du unter de.fuhrmeister.browserchooser.OptionsDialog SourceCode Danke für dein Angebot...wird gern angenommen!
-
Nein zufrieden bin ich natürlich nicht! Also Eclipse benutze ich schon seit über 4 Jahren, kenne mich also rel. gut aus. Ich versteh es ja auch nicht. Ich denke mir fehlen einfach die Erfahrungen was Performance und richtiger Programmierstiel unter Java angeht. Wie z. B. Schachtel niemals JScrollPane, keine TitledBorder etc. Ich denke ich benutze die Member und die einzelnen Components falsch. Mein Programm ist so klein das ich bestimmte Sachen nicht einhalte (z.B. MVC, GUI und Action-Trennung) Wenn ich dir mein Programm schicke wirst Du sicher die Hände über dem Kopf zusammenschlagen! Wenn Du magst und Zeit hast kann ich dier die Source des Dialogs schicken!? PS: Mein Eclipse braucht zum starten auch zw. 20-30 Sekunden. Aber das liegt wohl am Laptop!? Gruß Marcus
-
Danke für die Antwort! Das Problem liegt daran, daß das Erzeugen des Dialogs die ganze Gui blockiert. Das Daten lesen ist schnell gemacht, aber die ganzen Panels und Tabs und Labels benötigen viel Zeit. Ansonsten ist dein Code-Beispiel gut getroffen. Ich habe es nun als Hintergrund-Job beim Laden des Programms realisiert. Ist aber noch nicht so gut, darum werde ich das Erzeugen des Diaolgs in einen WorkerThread auslagern. Danke vielmals für die Vorschläge! THREAD KANN GESCHLOSSEN WERDEN!!
-
Moin, also folgendes Problem: Ich habe eine Anwendung(JWindow), die ,wenn man auf einen Button drückt, ein JDialog öffnet. Dieser JDialog hat rel viele JTabbedPanes mit vielen Componenten. Dann wird eine Konfigurationsdatei eingelesen und alle Componenten mit den Daten gefüllt. Die meisten Componenten sind globale Variablen Bis der JDialog erscheint können schon mal 5 Sekunden vergehen. Das ist nicht akzeptabel! Ich könnte den JDialog befüllen, während das Programm läuft und dann nur noch sichtbar machen. Will ich aber nicht unbedingt! Ich will verstehen warum das so lange dauert und was ich benutzen sollte um dies zu beschleunigen!? Ich habe nun vorerst ein JWindow gemacht, das den Ladestatus anzeigen soll. Aber das wird garnicht erst sichtbar gemacht(das Fenster ansich schon, aber nicht die Komponenten, das JLabel etc..), bzw. erst wenn alles (JDialog) angezeigt wird. Irgendwie wird die Anzeige der Komponenten(Lade-JWindow) geblockt bis alle Komponenten des JDialog initialisiert wurden. Habe ich JAVA noch nicht verstanden? ich dachte die Methoden werden abgearbeitet kehren zurück und es geht mit der nächsten weiter. Wäre für jden Tip dankbar!! Gruß MrRock
-
Danke schonmal, mit phpinfo wollte ich auch nur Details zum Server oder bestimmte Einstellungen erfahren. Hat nichts direkt mit der Datei zu tun. Ja die Datei ist in Ordnung! Es funktioniert bei keiner mp3 oder avi Datei. Wie gesagt es ist meinem Kunden erst nach dem Serverwechsel aufgefallen. Denn auf einem anderen Server funktionierts. auch bei anderen mp3-Links auf anderen Webseiten geht es. Die mp3s ruckeln nicht oder so. Es ist kein Caching Problem, denk ich. Ja ist alles rel. niedrig. 128kBit/s Es liegt auch nicht am WLAN. Es funktioniert weder bei mir noch bei meinem Kunden oder meinem Designer oder sonst auf irgendeinem Rechner. Es hat nichts mit kaputten Dateien zu tun, die werden vom Quicktime Plugin noch nichtmal voll geladen, sondern nur etwa 3 Sekunden (so lang ist dann auch nur der Ladebalken!!!) Und das bei allen Media-Dateien PS: Nur mal nebenbei, mein Programmier- und Codiererfahrungen sind schon etwas fortgeschrittener. Ist nicht bös gemeint, nur um dir meinen Erfahrungsstand zu verdeutlichen, damit wir die Kinderkrankheiten mal vergessen können (Obwohl ich sicherlich auch nicht alles einfache weiß). OK Danke, aber vielleicht fällt Dir/Euch noch etwas ein?
-
Hallo, hatte schonmal jemand folgendes Problem bzw. hat eine Idee? Ich habe auf einer Homepage eine normale mp3-Datei über einen Link referenziert. Wenn man diesen anklickt öffnet sich wie gewöhnlich ein neues Fenster und das entsprechende Browser-Plugin spielt die Datei ab. Jedoch wird nur ein Bruchteil des mp3s abgespielt. Bis auf Opera ist es in (fast) allen anderen Browsern ebenso. Die gleiche Datei auf einem anderen Server gepackt...und siehe da, sie wird vollständig abgespielt. Es liegt also nicht am Browser oder am Plugin oder gar an der Datei. Ich vermute es liegt am Server (Linux, Apache 2x, Plesk 8.1.1.) Gibt es da bestimmte Einstellungen oder Bedingungen die man beachtet muss? Kann ich evtl. über phpinfo() etwas ablesen? Schonmal riesen Dank!
-
Hallo! Ich habe ein Ethernetproblem und sehe nicht mehr ganz durch! Ich weiß nicht ob ich es hier oder im Linux Forum posten kann, darum jetzt erstmal hier. Eventuell kann mir ja hier jemand helfen!? Mein Aufbau ist folgender: Ein Modul mit AT91RM9200 Chip auf dem embedded Linux 2.6.12 läuft und unter anderem auch ein Host-side-USB und einen Device-side-USB Anschluss besitzt. Nun will ich ich gern auf das Filesystem per USB zugreifen können. Dafür gibt es einen gadget driver, der das Linux-System als USB/slave erscheinen läßt. Den Kernel hab ich mit folgenden Einstellungen neu kompiliert: <code> <*> Support for USB Gadgets USB Peripheral Controller (AT91 USB Device Port) ---> AT91 USB Device Port <*> USB Gadget Drivers (Ethernet Gadget (with CDC Ethernet support)) ---> Ethernet Gadget (with CDC Ethernet support) [*] RNDIS support (EXPERIMENTAL) (NEW) </code> Wenn ich nun das Modul per USB 2.0 Kabel an einem Windows-Rechner einstecke, erkennt dieser auch eine neue Ethernetverbindung, die ich mit der in der Linux-Distribution mitgelieferten linux.inf, installiere. (die Datei ist schon im DOS CRLF Format) So weit so gut! Aber erkkennen kann Windows das neue Gerät trotzdem nicht. <error message>Netzwerkkabel nicht angeschlossen</error message> Hab ich etwas vergessen? DHCP support einkompilieren? MAC Adressen anders einstellen? Ich bin für jede Hilfe oder Anreiz dankbar! MrRock
-
Tach! es ist doch so einfach! es lag doch echt an meinem geborgten Brenner, den ich kürzlich eingebaut habe, da mein anderer im ***** ist. ich hab das schon in anderen Foren gelesen. Nun, da ich ihn ausgebaut habe ist das Problem verschwunden. also ich danke euch allen, nun sind wir alle schlauer! keep smiling! mARCUS
-
Danke euch! also ich konnte nach ner weile nicht mal mehr starten! auf den abgesicherten modus bin ich auch gekommen aber mir ist nicht eingefallen wie ich da reinkomme. Ich vermute stark das es ein virus war! vielleicht sogar der neue sobig.f also vorsicht mit emails Nun hab ich die Festplatte formatiert und hoffe das es damit gegessen ist. Hab zwar einige Dateien verloren aber halb so wild. OK nis bald und nochmal danke mARCUS
-
Aahhh! Ich hab nen AMD Athlon 1, 1 GHz mit 256 MB RAM. Das Problem besteht seit kurzem! Wenn ich z.b. NUR (hab nichts anderes offen) den Windows-Explorer öffne oder mein Virusprogramm oder in Nero versuche n Datei zufinden, switcht mein PC auf blue-screen und gibt mir die Fehlermeldung: System ausgelastet Fehler in 00000soundso, wenn ich dann mit ENTER zu Windows zurück will, kann ich zwar alles sehen, aber nichts ist anzuklicken. Hab schon versucht mit Norton WinDoctor das Problem zufinden, aber irgendwo mitten im sytemcheck passiert´s wieder. Zum Glück kann ich noch meinen Browser öffnen, wenn ich jedoch 4 Fenster offen habe: Bingo! System ausgelastet. Ich habe sonst nichts geändert am PC, bis auf einen neuen Brenner! Kann es ein Virus sein obwohl ich ne Firewall habe? Wenn ja wie kann ich denn scannen ohne das mein PC mir diesen Streich spielt? Ich hab meine Festplatte noch nict formatiert das wollte ich mir als letzte Instanz aufheben. Bitte Hilfe Bitte sofort Bitte gern! Marcus:confused:
-
Moin! Problem: ich habe mir bei Microsoft den neuen Windows Media 9 Player runtergeladen, da ich ein Video habe das ich nirgends ansehen konnte und dacht eventl. damit funktioniert´s. Pustekuchen, dafür hab ich jetzt kein Brenner mehr!! erstmal die Daten: Ich habe einen AMD Athlon 1,1 GHz mit 2 Festplatten(Western Digital) die eine ist C: die andere ist partitioniert mit jeweils D: und E: Dann habe ich ein DvD Laufwerk und einen Brenner. Betriebssystem Windows ME Nach der Installation von Media 9 "hackte" mein PC bei manchen ausgeführten Aktionen (sekundenlanges Einfrieren des Mauszeigers). Nach dem Neustart führt der PC jetzt eine IDE Detection aus die fast eine halbe Minute benötigt, um mir dann zu sagen, dass er keine zweite Festplatte (als secondary master) und keinen Brenner (als secondary slave) findet. Wenn der PC voll hochgefahren ist kann ich jedoch auf die zweite Festplatte zugreifen. Nur das die Partitionen geändert wurden auf E: und F: wobei das DvD-Laufwerk nun D: heisst. Machmal jedoch findet er beim booten die zweite PLatte. Nach einer langen Nacht voll Verzweiflung hab ich C: formatiert und Windows neu installiert. Aber potzdonner, das Problem besteht weiterhin. aaaaaahhhh was tun??? danke schonmal im Vorraus mARCUS