{"id":1143,"date":"2011-10-24T15:39:29","date_gmt":"2011-10-24T13:39:29","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/2011\/10\/ein-paar-faqs-teil-1\/"},"modified":"2011-10-24T15:39:29","modified_gmt":"2011-10-24T13:39:29","slug":"ein-paar-faqs-teil-1","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2011\/10\/ein-paar-faqs-teil-1\/","title":{"rendered":"Ein paar (F)AQs, Teil 1"},"content":{"rendered":"<p><b>Ich ben\u00f6tige f\u00fcr ein Applet 16 Zufallszahlen. Das habe ich mit Random gel\u00f6st und soweit klappt das auch. Dummerweise soll jede Zahl nur einmal vorkommen, was nicht der Fall ist (liegt wohl in der Natur von Zufallszahlen). Wie kann ich das denn l\u00f6sen?<\/b><\/p>\n<p>Du kannst die Collection API nutzen. Erzeuge ein ArrayList der Gr\u00f6\u00dfe 16. Dann rufe shuffle() auf, welches dir das Feld durchw\u00fcrfelt. Nun kannst du einen Iterator dar\u00fcber laufen lassen. Ist dieser am Ende, dann shuffle() einfach neu.<\/p>\n<p><b>Wie kann man rausfinden, ob mit der Maus auf eine zuvor gezeichnete Linie geklickt wurde?<\/b><\/p>\n<p>Das geht mit der Standard-Java-Bibliothek nicht. Da musst du selbst was programmieren; es gibt aber reichlich vorgefertigtes. Unter anderem das sehr leistungsf\u00e4hige JGraph (<a href=\"http:\/\/jgraph.sourceforge.net\/\">http:\/\/jgraph.sourceforge.net\/<\/a>). Allerdings muss man sich schon etwas einarbeiten.<\/p>\n<p><b>Wei\u00df jemand wie es m\u00f6glich ist von mehreren Linien den Schnittpunkt zu berechnen. Eigentlich geht es darum festzustellen ob sich Linien schneiden. Diese Linien sind durch Koordinaten x und y bestimmt.<\/b><\/p>\n<p>Das sind genau genommen zwei Probleme. a) Schneiden sie sich \u00fcberhaupt und b) wo schneiden sie sich. Dann kommt noch eine Frage hinzu: Soll getestet werden, ob sich eine bestimmte Linie mit irgend einer anderen Linie schneidet, oder soll getestet werden, ob sich irgendeine Linie mit irgendeiner anderen schneidet.   <br \/>Ein schnelles Verfahren f\u00fcr die L\u00f6sung ist der klassische Sweep-Line-Ansatz. Eine Anfrage mit Google d\u00fcrfte schnell ein Ergebnis liefern. Bei ein paar wenigen Linien reicht ein ein Doofi-Verfahren jeder-mit-jedem mit intersectsLine(Line2D) aus Line2D.<\/p>\n<p><b>Ich m\u00f6chte ein Applet programmieren, in dem ich 2 Rechtecke zeichne. Wenn die beiden Rechtecke sich \u00fcberschneiden, dann soll die Schnittmenge in einer anderen Farbe dargestellt werden. Nun man kann das nat\u00fcrlich mit einzelnen Punkten machen, 24 If F\u00e4lle aber&#8230; In Java 2 gibt es aber eine Methode die mir diese Schnittmenge berechnet. Wie fange ich die beiden Koordinaten dann auf? Wie kann ich die weiterverarbeiten?<\/b><\/p>\n<p>Wenn die Rechtecke nicht gedreht sind, ist das mit der Klasse Rectangle zu l\u00f6sen. createIntersection(Rectangle2D r) liefert dir ein Rectangle2D Objekt zur\u00fcck. Mit getWidth, getX, getY kommst du dann an die Werte ran.<\/p>\n<p><b>Wie f\u00fcgt man mehrere Bilder zu einem Bild zusammen?<\/b><\/p>\n<p>F\u00fcr Image Objekte gibt es einen Konstruktur, in dem du auch die Gr\u00f6\u00dfe angeben kannst. Nimm diesen und erzeugt ein das Objekt. Anschlie\u00dfend kannst du dir mittels getGraphics() einen Grafik-Kontext holen und diesen dann Offline zum Platzieren der Bilder nehmen. Neben Image gibt es auch noch BufferedImage. Mit einem PixelGrabber und MemoryImageSource kann man du auch arbeiten, aber das ist ung\u00fcnstig, da createImage()&#160; leider relativ viel Rechenzeit kostet.<\/p>\n<p><b>Ich will zwei JPEG-Bilder (gleicher Gr\u00f6\u00dfe) lesen, untereinander kleben und als eine JPEG-Datei wieder speichern.<\/b><\/p>\n<p>Folgendes sollte klappen&#160; (ungetestet)<\/p>\n<pre>Image i1 = ...\nImage i2 = ...    \/\/ deine beiden Bilder\n\n\/\/ Bilder jetzt laden (ImageIcon der MediaTracker)\n\nImage i3 = createImage( i1.width(), i1.height() + i2.height() )\nGraphics g = i3.getGraphics();\ng.drawImage( i1, koordinaten )\ng.drawImage( i2, koordinaten )<\/pre>\n<p><b>Wie kann ich ein *.gif oder *.jpg von ein Klient zum Server kriegen mit RMI?<\/b><\/p>\n<p>Entweder ein Icon-Objekt (Swing) draus machen, oder ein Bytefeld (PixelGrabber) und auf der anderen Seite wieder zusammensetzten. Leider bekommt man ja ein Image-Objekt nicht serialisiert.<\/p>\n<p><b>Wie kann ich den Wordwrap bei einer Textbox ausschalten?<\/b><\/p>\n<p>Ohne horizontalen Schieberegler wird Zeitenumbruch automatisch eingeleitet. TextArea.SCROLLBARS_NONE oder TextArea.SCROLLBARS_VERTICAL_ONLY einschalten. Standardm\u00e4\u00dfig wird die TextArea mit horizontalem und and vertikalem Schieberegler ausgestattet. Setze dies im Konstruktor oder sp\u00e4ter mit der set() Methode.<\/p>\n<p><b>Ist es m\u00f6glich, das Name-Caching der Klasse java.inet.InetAddress f\u00fcr einen bestimmten Lookup abzuschalten? Im konkreten Fall geht es um eine dyndns-Adresse, die nicht gecacht werden soll. Das globalNamenscaching soll nicht abgeschaltet werden.<\/b><\/p>\n<p>Unter <a href=\"http:\/\/www.dnsjava.org\/\">http:\/\/www.dnsjava.org\/<\/a> gibt es eine pure Java-Implementierung, mit der man den Cache ganz pr\u00e4zise steuern.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich ben\u00f6tige f\u00fcr ein Applet 16 Zufallszahlen. Das habe ich mit Random gel\u00f6st und soweit klappt das auch. Dummerweise soll jede Zahl nur einmal vorkommen, was nicht der Fall ist (liegt wohl in der Natur von Zufallszahlen). Wie kann ich das denn l\u00f6sen? Du kannst die Collection API nutzen. Erzeuge ein ArrayList der Gr\u00f6\u00dfe 16. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[1],"tags":[],"class_list":["post-1143","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1143","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=1143"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1143\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=1143"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=1143"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=1143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}