Ein paar (F)AQs, Teil 1

Ich benötige für ein Applet 16 Zufallszahlen. Das habe ich mit Random gelöst 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ösen?

Du kannst die Collection API nutzen. Erzeuge ein ArrayList der Größe 16. Dann rufe shuffle() auf, welches dir das Feld durchwürfelt. Nun kannst du einen Iterator darüber laufen lassen. Ist dieser am Ende, dann shuffle() einfach neu.

Wie kann man rausfinden, ob mit der Maus auf eine zuvor gezeichnete Linie geklickt wurde?

Das geht mit der Standard-Java-Bibliothek nicht. Da musst du selbst was programmieren; es gibt aber reichlich vorgefertigtes. Unter anderem das sehr leistungsfähige JGraph (http://jgraph.sourceforge.net/). Allerdings muss man sich schon etwas einarbeiten.

Weiß jemand wie es möglich 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.

Das sind genau genommen zwei Probleme. a) Schneiden sie sich überhaupt 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.
Ein schnelles Verfahren für die Lösung ist der klassische Sweep-Line-Ansatz. Eine Anfrage mit Google dürfte schnell ein Ergebnis liefern. Bei ein paar wenigen Linien reicht ein ein Doofi-Verfahren jeder-mit-jedem mit intersectsLine(Line2D) aus Line2D.

Ich möchte ein Applet programmieren, in dem ich 2 Rechtecke zeichne. Wenn die beiden Rechtecke sich überschneiden, dann soll die Schnittmenge in einer anderen Farbe dargestellt werden. Nun man kann das natürlich mit einzelnen Punkten machen, 24 If Fälle aber… 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?

Wenn die Rechtecke nicht gedreht sind, ist das mit der Klasse Rectangle zu lösen. createIntersection(Rectangle2D r) liefert dir ein Rectangle2D Objekt zurück. Mit getWidth, getX, getY kommst du dann an die Werte ran.

Wie fügt man mehrere Bilder zu einem Bild zusammen?

Für Image Objekte gibt es einen Konstruktur, in dem du auch die Größe angeben kannst. Nimm diesen und erzeugt ein das Objekt. Anschließend 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ünstig, da createImage()  leider relativ viel Rechenzeit kostet.

Ich will zwei JPEG-Bilder (gleicher Größe) lesen, untereinander kleben und als eine JPEG-Datei wieder speichern.

Folgendes sollte klappen  (ungetestet)

Image i1 = ...
Image i2 = ...    // deine beiden Bilder

// Bilder jetzt laden (ImageIcon der MediaTracker)

Image i3 = createImage( i1.width(), i1.height() + i2.height() )
Graphics g = i3.getGraphics();
g.drawImage( i1, koordinaten )
g.drawImage( i2, koordinaten )

Wie kann ich ein *.gif oder *.jpg von ein Klient zum Server kriegen mit RMI?

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.

Wie kann ich den Wordwrap bei einer Textbox ausschalten?

Ohne horizontalen Schieberegler wird Zeitenumbruch automatisch eingeleitet. TextArea.SCROLLBARS_NONE oder TextArea.SCROLLBARS_VERTICAL_ONLY einschalten. Standardmäßig wird die TextArea mit horizontalem und and vertikalem Schieberegler ausgestattet. Setze dies im Konstruktor oder später mit der set() Methode.

Ist es möglich, das Name-Caching der Klasse java.inet.InetAddress für einen bestimmten Lookup abzuschalten? Im konkreten Fall geht es um eine dyndns-Adresse, die nicht gecacht werden soll. Das globalNamenscaching soll nicht abgeschaltet werden.

Unter http://www.dnsjava.org/ gibt es eine pure Java-Implementierung, mit der man den Cache ganz präzise steuern.

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert