Zum Inhalt springen

geometer

Mitglieder
  • Gesamte Inhalte

    14
  • Benutzer seit

  • Letzter Besuch

  1. Hi Leute, ich suche die Lösung für den WiSo-Teil der Abschlussprüfung Sommer 2003 FI-AE. Wer sie hat schickt bitte ne Mail an mich. sandro_mosdzinski@web.de
  2. Ich meine schon. Wenn eine Aufgabe mehrere Lösungen verlangt, z.B. eine bestimmte Reihenfolge oder so, und man hat nur einen Teil dieser Lösungen richtig, so bekommt man die Punkte für richtige Ergebnisse anteilig der Gesamtpunktzahl. Da es meines Wissens immer 1 Punkt pro Aufgabe gibt, würde man also bei 3 richtigen von 4 verlangten Antworten genau 3/4 Punkte auf diese Aufgabe bekommen.
  3. Ok. Ihr braucht euch nicht weiter bemühen, da ich den Fehler schon gefunden habe. In der paint-Methode muss ich statt getX() + getInsets().left und getY + getInsets().top nur getInsets().left und getInsets().top verwenden.
  4. Hallöchen, ich habe folgendes Problem. Ich möchte, dass ein Border erscheint, wenn ich mit der Maus über den Button fahre. Und wenn ich den Bereich wieder verlasse, soll der Border wieder verschwinden. Man kann das ganze lösen, indem man zwei verschiedene Border-Typen verwendet. Den einen (z.B. LineBorder) setzt man in der Methode mouseEntered und den anderen (EmptyBorder) setzt man in der mouseExited-Methode. Jedoch stellte mich das Ergebnis dieser Variante nicht zufrieden, da der Border um den gesamten Button gezeichnet wird (JButton mit Icon und String). Ich hätte jedoch gern, dass der Border nur um das Icon gezeichnet wird. Dazu habe ich die folgende Klasse myButton implementiert: public class myButton extends JButton { private boolean isOver = false; int iconHeight, iconWidth; public myButton(String s, ImageIcon icon) { super(s, icon); iconWidth = icon.getIconWidth(); iconHeight = icon.getIconHeight(); setBorder(BorderFactory.createLineBorder(Color.blue)); setFocusPainted(false); setRolloverEnabled(true); addMouseListener(new MouseAdapter() { public void mouseEntered(MouseEvent e) { isOver = true; repaint(); } public void mouseExited(MouseEvent e) { isOver = false; repaint(); } }); } public void paint(Graphics g) { super.paint(g); if(isOver) { g.setColor(Color.blue); g.drawRect( getX() + getInsets().left, getY() + getInsets().top, iconWidth, iconHeight); } } } Das Problem, welches ich mit Verblüffen feststellte ist, dass lediglich die erste Instanz dieser Klasse myButton das Zeichnen des Border umsetzt. Alle danach instantiierten Objekt der Klasse zeichnen den Border nicht. Wo liegt das Problem? Wäre nett, wenn ein paar Leute die Klasse mal testen könnten, um mir zu Zeigen, wo mein Fehler liegt.
  5. Hi, ich hab die Sache ein wenig anders gelöst. Ich habe eine Klasse Schlange und eine Klasse für die Schlangenteile. Jedes Teil kennt seine Position. Die Schlange selbst besteht aus einer ArrayList, welche die Schlangenteile enthält. Die Bewegung der Schlange funktioniert so, dass ich nach Feststellen der Richtung immer ein neues Schlangenteil vorn anfüge und das letzte lösche. Gezeichnet wird also nur das erste Schlangenelement und das letzte (wird mit der Hintergrundfarbe gezeichnet), bevor es gelöscht wird.
  6. Hallo, ich würde gern ein Snake-Spiel in Java schreiben. Ich habe mir ein paar Gedanken gemacht, aber weiß nicht so richtig, wie ich das umsetzen kann. Ich wollte eine Klasse Schlange und eine, die ein einzelnes Schlangenteil beschreibt verwenden. Ich weiß aber nicht wie ich das Zeichnen der Schlange implementieren soll. Noch weniger weiß ich wie ich mir Punkte, an denen die Schlange die Richtung wechseln soll, merken kann bzw. an denen das Zeichnen der Schlange bewerkstelligen soll. Ist es vielleicht hilfreich mit der sogenannten 'Turtle-Grafik' zu arbeiten, oder wie würdet ihr die Sache angehen? Ich bin für jeden Tipp dankbar. mfg Sandro
  7. Ich möchte beim Drücken eines Links eine js-Funktion ausführen. Beim Drücken soll die Funktion aufgerufen und der Name bzw. die Nummer des Links übergeben werden. Mit nem Button wäre das alles kein Problem, aber wie löse ich das mit nem Link?
  8. Wenn ich InputStream verwende muss ich davon ausgehen, dass nach jeder Eingabe die Entertaste gedückt wird. Da ich das aber nicht will, scheidet diese Variante schon mal aus. Ich will Tastaturereignisse so abfragen, als hätte ich einen Eventlistener z.B. bei einer AWT- oder SWING-Komponente. Hat jemand ne Idee? mfg geometer
  9. Hallo an alle Experten und die, die es werden wollen. Ich habe eine Konsolenanwendung in java geschrieben und will nun bei beliebigem Tastendruck, die gedückte Taste ermitteln. Da ich aber weder awt- noch swing-Elemente verwende, habe ich keine Ahnung wie ich das realisieren kann. Bin für jeden konstruktiven Rat dankbar HELP
  10. Ich habe ein Applet, in dem ich in der oberen Hälfte ein Panel mit 2 Label und 2 JComboBox anlege. In der unteren Hälfte habe ich eine anderes Panel, in dem gezeichnet werden soll. Wenn ich jedoch die paint-Methode implementiere, wird nur gezeichnet, aber die anderen Komponenten sind verschwunden. Hier mal der Code meines Applets: package fractalApplet; import java.awt.*; import java.awt.event.*; //import java.applet.*; import javax.swing.*; public class LindenmayerApplet extends JApplet { private boolean isStandalone = false; JPanel jPanel1 = new JPanel(); JPanel jPanel2 = new JPanel(); String [] kurven = {"Kochkurve", "Hilbertkurve", "Kochschneeflocke"}; JComboBox jComboBox1 = new JComboBox(kurven); String [] rekursion = {"0. Ordnung ", "1. Ordnung ", "2. Ordnung ", "3. Ordnung ", "4. Ordnung "}; JComboBox jComboBox2 = new JComboBox(rekursion); JLabel jLabel1 = new JLabel(); JLabel jLabel2 = new JLabel(); Lindenmayer lSys = new Lindenmayer(); //Parameterwert holen public String getParameter(String key, String def) { return isStandalone ? System.getProperty(key, def) : (getParameter(key) != null ? getParameter(key) : def); } //Das Applet konstruieren //Das Applet initialisieren public void init() { try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } //Initialisierung der Komponenten private void jbInit() throws Exception { this.getContentPane().setBackground(SystemColor.control); this.setSize(new Dimension(600,500)); jPanel1.setBackground(Color.white); jLabel1.setText("Kurve"); jLabel2.setText("Rekursionstiefe"); jComboBox1.addActionListener(new LindenmayerApplet_jComboBox1_actionAdapter(this)); jComboBox2.addActionListener(new LindenmayerApplet_jComboBox2_actionAdapter(this)); this.getContentPane().add(jPanel1, BorderLayout.NORTH); jPanel1.add(jLabel1, null); jPanel1.add(jComboBox1, null); jPanel1.add(jLabel2, null); jPanel1.add(jComboBox2, null); jPanel2.setBackground(Color.white); this.getContentPane().add(jPanel2, BorderLayout.CENTER); } //Applet-Information holen public String getAppletInfo() { return "Applet-Information"; } //Parameter-Infos holen public String[][] getParameterInfo() { return null; } //Statische Initialisierung des Look & Feel static { try { //UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); //UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); } catch(Exception e) { } } void jComboBox1_actionPerformed(ActionEvent e) { setAxiom(); setRule(); } void jComboBox2_actionPerformed(ActionEvent e) { setRekursion(); } public String setAxiom() { String axiom = "F"; switch(jComboBox1.getSelectedIndex()) { case '0': axiom = "F"; break; case '1': axiom = "F - F - F - F - F - F"; break; case '2': axiom = "F"; break; } return axiom; } public String setRule() { Graphics g = this.getGraphics(); g.setColor(Color.black); String rule = ""; switch(jComboBox1.getSelectedIndex()) { case '0': rule = "F-F++F-F"; break; case '1': rule = "F-F++F-F"; break; case '2': rule = "F-F++F-F"; break; } return rule; } public int setRekursion() { int ordnung = 0; switch(jComboBox2.getSelectedIndex()) { case '0': ordnung = 0; break; case '1': ordnung = 1; break; case '2': ordnung = 2; break; case '3': ordnung = 3; break; case '4': ordnung = 4; break; } return ordnung; } public void paint(Graphics g) { g = jPanel2.getGraphics(); Turtle myTurtle = new Turtle(this, g); g.setColor(Color.blue); //lSys.drawLindenmayer(myTurtle, setAxiom(), setRule(), 60.0, 400, setRekursion()); lSys.drawLindenmayer(myTurtle, "F", "F-F++F-F", 60.0, 400, 0); } } class LindenmayerApplet_jComboBox1_actionAdapter implements java.awt.event.ActionListener { LindenmayerApplet adaptee; LindenmayerApplet_jComboBox1_actionAdapter(LindenmayerApplet adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jComboBox1_actionPerformed(e); } } class LindenmayerApplet_jComboBox2_actionAdapter implements java.awt.event.ActionListener { LindenmayerApplet adaptee; LindenmayerApplet_jComboBox2_actionAdapter(LindenmayerApplet adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jComboBox1_actionPerformed(e); } } Hat irgend jemand ne Ahnung, warum nicht Komponenten und Zeichnung dargestellt werden. Was mache ich denn falsch??? mfg Sandro
  11. Hallo an alle, ich beschäftige mich gerade mit Fraktalen. Einige Fraktale lassen sich auch mit Hilfe von Ersetzungssystemen (Lindenmayer-Systeme) grafisch darstellen. Am besten lässt sich die Darstellung solcher Fraktale mittels Turtlegrafik umstzen. Ich verwende eine Klasse, die diese Art des Zeichnens implementiert. import java.awt.*; import java.util.*; public class Turtle { Graphics g; Container cont; TurtleState state; Stack turtleStateStack; //Konstruktor versetzt neuerzeugte Turtle in den Ausgangszustand public Turtle(Container c, Graphics g) { this.g = g; this.cont = c; state = new TurtleState(); turtleStateStack = new Stack(); goHome(); turnNorth(); liftTail(); } //Methode zum Heben des Schwanzes public void liftTail() { state.penDown = false; } //Methode zum Senken des Schwanzes public void dropTail() { state.penDown = true; } //Methode zum Versetzen der Turtle in die Mitte des Containers public void goHome() { int width = cont.getSize().width - (cont.getInsets().left + cont.getInsets().right); int height = cont.getSize().height - (cont.getInsets().top + cont.getInsets().bottom); state.actX = cont.getInsets().left + width / 2; state.actY = cont.getInsets().top + height / 2; } //Ausrichtung der Turtle nach Norden public void turnNorth() { state.actAngle = Math.PI / 2.0; } //Vorwärtsbewegung der Turtle public void moveFwd(int dist) { int x = (int)(Math.cos(state.actAngle) * dist); int y = (int)(Math.sin(state.actAngle) * dist); y = -y; if(state.penDown) { g.drawLine(state.actX, state.actY, state.actX + x, state.actY + y); } state.actX += x; state.actY += y; } //Linksdrehung der Turtle public void turnL(double angle) { angle = angle * Math.PI / 180; state.actAngle += angle; if(state.actAngle > 360.0) { state.actAngle -= 360.0; } } //Rechtsdrehung der Turtle public void turnR(double angle) { turnL(-angle); } //Holen der letzten gespeicherten Werte für x, y, Winkel public void pushState() { turtleStateStack.push(state); } //Hinzufügen bzw Merken der aktuellen Werte für x, y und Winkel public void popState() { if(!turtleStateStack.empty()) { state = (TurtleState)turtleStateStack.pop(); } } } //Klasse zur Aufnahme von Turtle-Zuständen class TurtleState { int actX, actY; double actAngle; boolean penDown; } Nun will ich in einer Applikation oder einem Applet diese Klasse zum Darstellen von Fraktalen Gebilden verwenden. Hier führe ich mal die Verwendung am Beispiel der Kochkurve auf. import java.awt.*; import java.awt.event.*; import javax.swing.*; /** * @author Sandro Mosdzinski */ public class TestTurtle extends JFrame { int cnt; public TestTurtle() { super("TurtleTest"); addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent event) { System.exit(0); } } ); setBackground(Color.white); } public static void main(String[] args) { TestTurtle test = new TestTurtle(); test.setSize(800, 600); test.setLocation(0,0); test.show(); } public void paint(Graphics g) { g.setColor(Color.blue); Turtle t = new Turtle(this, g); t.dropTail(); t.turnR(30); koch(t, 200); t.turnR(120); koch(t, 200); t.turnR(120); koch(t, 200); /* t.turnR(90); t.moveFwd(100); t.turnL(60); t.moveFwd(100); t.turnR(120); t.moveFwd(100); t.turnL(60); t.moveFwd(100); */ } public void koch(Turtle t, int k) { if (k <= 10) t.moveFwd(k); else { koch(t, k/3); t.turnL(60); koch(t, k/3); t.turnR(120); koch(t, k/3); t.turnL(60); koch(t, k/3); } } } Nun will ich aber, anstatt die Kochkurve speziell zu zeichnen, eine Methode schreiben, welche die Parameter, die eine solche Kurve beschreiben, aufnimmt und somit die entsprechende Kurve darstellt. Die dabei übergebenen Parameter sind in einem String untergebracht, welcher z.B. so aussehen könnte. String s = "F+F--F+F" F -> zeichne Linie der Länge x f -> Vorwärtsbewegung um die Länge x, ohne eine Linie zu zeichnen + -> Drehung um einen Winkel a im Uhrzeigersinn - -> Drehung um einen Winkel a gegen den Uhrzeigersinn Das Ergebnis soll also eine Methode drawFraktal(String rule) sein, welche je nach übergebener Zeichenkette eine bestimmte Kurve zeichnet. Ich habe es schon mehrmals versucht, bin aber zu keinem vernünftigen Ergebnis gekommen (Die Rekursion erschwert die Sache ungemein) Ich wäre über jeden Hinweis dankbar
  12. Hallo, ich habe ein html-Template mit 3 verschieden Breichen, die ich je nach Parameter, füllen will. Beim Aufruf der Startseite fülle ich die Links der Hauptkategorie, die immer zu sehen sein sollen. Das klappt auch so weit. Wie gehe ich aber nun vor, wenn ich einen der Hauptlinks anklicke? In einem anderen Bereich des Templates sollen untergeordnete Links der Hauptkategorie (z.B. Haupt: about_me; untergeordnet:Lebenslauf, Hobbys etc.) eingesetzt werden, d. h. beim Anklicken einer Hauptkategorie soll der Bereich mit den Unterkategorien gefüllt werden. Je nach ausgewählter Unterkategorie soll in einem dritten Bereich des html-Templates die zur Unterkategorie gehörende Seite angezeigt werden. Wie organisiere ich die Links und wie übergebe ich dabei die Parameter an mein php-Script (z.B. ?haupt=about_me&unter=Lebenslauf)? Hat jemand ne Idee?
  13. Hab den Fehler jetzt gefunden. Es lag an der Groß- bzw. Kleinschreibung von BEGIN und END
  14. Hallo, ich bin absoluter php-Anfänger und habe ne Frage zur Verwendung des 'IT'-Templatesystems (pear). Ich habe ein Html-Template erstellt und will dieses nun füllen. Das Codefragment aus der Html-Datei sieht so aus <!--begin Kategorie--> <tr> <td nowrap> <a href="{cat_link}">{cat}</a> </td> </tr> <!--end Kategorie--> ------------------------------------------------------------------------------------- Es folgt der Code aus dem zugehörigen php-Script <?php include('template.php'); $tpl = new integratedTemplate('./'); $tpl->loadTemplateFile('./templates/container.tpl.html'); $stringStart = file_get_contents("./templates/start.tpl.html"); $tpl->setVariable("content", $stringStart); //hier lass ich aus Platzgründen was weg foreach($arrayCat as $daten) { $tpl->setCurrentBlock("Kategorie"); $tpl->setVariable("cat", $daten); //$tpl->setVariable("cat_link", ???????????????); $tpl->parseCurrentBlock(); } $tpl->show(); ?> Anstatt mir den aktuellen Link des Arrays in eine neue Zelle der nächsten Zeile zu schreiben, erscheint am Ende mein Template so oft, wie das Array Einträge hat. Und jedes mal steht im Template nur ein Link. Woran liegt das?

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...