Zum Inhalt springen

ksg9-sebastian

Mitglieder
  • Gesamte Inhalte

    176
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von ksg9-sebastian

  1. Erster Tipp: Code-Tags ! die sehen so aus und dann ist der Code ganz toll formatiert Dann zu deiner Seminararbeit: Die Methode inNode(int x, int y) soll berechnen ob der übergeben Punkt in der Node liegt. Die Node ist definiert mit x, y als Koordinate und size als Größe. Somit würde eine Node mit x=10, y=10, size=5 im Koord.system bei 10/10 einen "Eckpunkt" haben und jeweils 5 hoch und 5 breit sein. Somit würde die Methode ungefähr so aussehen: public boolean inNode(int pX, int pY){ boolean inNode xEnde = x + size; yEnde = y + size; boolean xInside = false; boolean yInside = false; xInside = pX >= this.x && pX <= xEnde; yInside = pY >= this.y && pY <= yEnde; return xInside && yInside; } Dann zum Konstruktor..folgende Parameter sollen übergeben werden: - Wertebereich für x-Position - Wertebereich für y-Position - Wertebereich für Größe So hab ich's zumindest verstanden D.h. du erzeugst die Parameter zwischen den beiden gegebenen Zahlen. Bsp: x-Position soll zwischen 10 und 20 sein. D.h. du erzeugst ne Zufallszahl zwischen 10 und 20. Das geht z.B. mit Math.random() welcher eine Zahl zwischen 0 und 1 (exclusive) erzeugt. Um auf den Wertebereich zu kommen musst du die erzeugte Zufallszahl mit der Differens (xEnd, xStart) multiplizieren und dann xStart addieren. xStart - 10 xEnd - 20 Differenz d = 10 Zufallszahl z = 0.4 z = z * 10 -> 4 z + xStart = 14 Somit wäre x = 14. Analog kannst du die anderen Zahlen auch erzeugen. public Node(int xStart, int xEnd, int yStart, int yEnd, int sizeStart, int sizeEnd){ this.x = (Math.random() * Math.abs(xEnd - xStart)) + xStart; this.y = (Math.random() * Math.abs(yEnd - yStart)) + yStart; this.size = (Math.random() * Math.abs(sizeEnd - sizeStart)) + sizeStart; } Code musstn och entsprechend korrigieren wegen Casts u.s.w.
  2. Oh lieber Gott, keine Ahnung von Java aber dann mit Hibernate anfange?? Das ist ja echt gut. Zumal Hibernate wohl das Framework ist was ich mit am wenigsten nem Einsteiger in die Hand geben würde Lass doch Hibernate für's erste die Tabellen erzeugen. Scheinbar kennst du dich mit (My)sql auch nicht aus, da wäre das vernünfitg um mal ein halbwegs lauffähiges System zu haben. Wenn du dann die Java-Anwendung aus Tutorials zusammenkopiert hast kannst du dich ja nach MySQL-Tutorials umschauen und dort weiter zusammenkopieren. Ach ja, deine ganzen NoClassDefFoundErrors kommen wohl daher dass du irgendwelche unnötigen Libs aufgenommen hast welche wiederum andere unnötige libs benötigen. Schau dir einfach mal in der Hibernate-Distribution die readme unter "lib" an. Dort stehen auch welche Bibliotheken optional und welche pflicht sind.
  3. und Thread (Java 2 Platform SE v1.4.2)
  4. Wie kommst du drauf aus einem Namen eines ZIP-Eintrags (z.B: eine Datei aus dem Archiv) ein File zu machen und dann zu erwarten dass der Pfad stimmt? Du musst über die ZIP-Entries iterieren (das tust du ja mit der Enumeration) und dann kannst du dir an jedem ZIP-Entry einen InputStream für dieses eine Entry holen und dann kannst du damit nen BufferedReader bauen. Allerdings erschließt sich mir der Sinn nicht so ganz eine Datei mit nem BufferedReader (Character-Stream) zu lesen. Sind das nur Textdateien? ** edit ** Ach ja, www.google.de mit "java zip extract files" liefert schon die erstren 20 brauchbaren Codesnippets..
  5. Geh ich richtig in der Annahme dass du auf der HHS in Karlsruhe bist? Welchen Lehrer haste denn? Und sonst gibts nicht viel zu sagen, die Aufgabe wird dir keiner Lösen. Und ohne Ansätze wirst du auch keine Antworten bekommen
  6. Hm, wenn du schon SWT verwendest dann bietet sich JFace Databinding an. Evtl. noch ein paar weitere Bindings für Buttons und Co und dann passt das. Sowas wie ein CommandBinding: Beim klick auf nen Button wird eine Methode in der Controllerklasse aufgerufen. Dann kannst du schön trennen zwischen SWT-GUI, Datenmodel und Controlerklassen.
  7. Aaaalso das Teil was du aufrufen willst ist eine statische Methode, d.h. Aufruf über Klassenname.Methodenname. In deinem Fall reicht der methodenname, also design(); Was du so grundsätzlich tun kannst: - beim Start liest du die Anzahl der vorhandenen Datensätze aus: "SELECT count(<id spalte>) FROM <tabelle>". Dann ein rs.next() und rs.readInt(); (rs = ResultSet). Den Wert speicherst du dir dann in einer privaten Variable (maxSaetze). Dann speicherst du die ID des aktuellen Datensatzes in einer anderen Variable (z.B. aktuellerSatz = 0). Beim klick auf den Button machst du dann sowas wie if(aktuellerSatz == maxSaetze) aktuellerSatz = 0; showRecord(); Da du grade den letzten Datensatz hast musst du wieder auf den ersten Springen. Dann rufst du ne Methode auf welche den Datensatz ausliest und in der GUI darstellt, z.B. private void showRecord(){ ResultSet rs = con.createStatement().executeQuery("SELECT * FROM <tabelle> LIMIT " + aktuellerSatz + ", 1); // will heißen einen Datensatz ab der Stelle <aktuellerSatz> // code um aus dem ResultSet zu lesen und die Infos in ger GUI darzustellen // am ende dann aktuellerSatz +1 aktuellerSatz++; } Das ganze dann in ne GUI-Klasse verpackt (wir sehen mal von MVC ab) public class MyGUI extends JFrame{ private int maxSaetze = 0; private int aktuellerSatz = 0; // diverse Buttons und Textfelder fehlen private Connection con; private void init(){ // Connection zur Datenbank // Anzahl an Datensätzen auslesen showDataset(); } private void showDataset(){ // Satz mit der Nummer <aktuellerSatz> auslesen und darstellen aktuellerSatz++; } // wird vom Button "nächster Datensatz" aufgerufen private void nextDateset(){ if(aktuellerSatz == maxSaetze){ aktuellerSatz = 0; } showDataset(); } // wird vom Button "vorheriger Datensatz" aufgerufen private void prevDateset(){ if(aktuellerSatz == 0){ aktuellerSatz = maxSaetze; } showDataset(); } public void main(){ MyGUI gui = new MyGUI(); // GUI-spezifischer Code gui.setVisible(true); } } Musst halt das Gerüst noch vervollständigen, Buttons, Textfelder, Actionlistener u.s.w. anlegen..
  8. hehe, nicht auf den CSlern rumhacken. Ich habs auch jahrelang gespielt und spiels immernoch ab und zu.. :D:bimei Warum seine Mutter kein fertiges Tool verwenden kann..hmhm..ziemlich miese Idee wie dir jeman deine Hausaufgaben macht. Auch sehr beliebte Sprüche die du jetzt bringen könntest: - ich hatte keine Zeit Java zu lernen wegen der anderen Fächer - unser Lehrer kann einem nix beibringen - die ganze Klasse ist schlecht in Java - unser Lehrer kann auch kein Java Weiter gibts auf Anfrage...*sticheln macht Spaß*. Aber für nen 100er würd ich dir das Tool programmieren. Mehr als vorhandenes zusammenkopieren isses ja nicht *copy is my hobby* ** edit ** Ach ja, der letzte Spruch war Ironie
  9. ksg9-sebastian

    CaretListener

    Der CaretListener ist für das Problem der falsche Ansatz. Du solltest einen DocumentListener verwenden. Da ich sowas schon selbst implementiert hab mal der Code: Ist noch viel zeugs dabei was du nicht benötigst, aber das kannst ja rauswerfen. Ich hatte auch mal eine Implementierung welche sauber umbricht (=> Wenn möglich werden ganze Wörter umgebrochen). Mit dem Code unten werden Wörter auch zerhackt. Der Code gehört in eine Klasse welche ein Document erweitert (siehe API javax.swing / javax.swing.text). Gruß Sebastian /** * Diese Methode macht automatische Zeilenumbrüche nach einer bestimmten Anzahl Zeichen. * Die Anzahl Zeichen wird über die Variable charsPerLine festgelegt. * Wenn eine Zeile zu lang ist wird Text umgebrochen. * * @param str der String der bearbeitet werden soll * @return der fertig bearbeitete String */ private WrapResult wordWrap(StringBuffer str, int offsetPosition) { WrapResult result = new WrapResult(); StringBuffer wrapped = new StringBuffer(); int charsInLine = 0; int lineCounter = 0; int linesInserted = 0; for (int i = 0; i < str.length(); i++) { String chr = String.valueOf(str.charAt(i)); if (LINE_SEPARATOR.equals(chr)) { charsInLine = 0; lineCounter++; } else { if (charsInLine == charsPerLine) { wrapped.append(LINE_SEPARATOR); charsInLine = 0; lineCounter++; if (offsetPosition >= i) { linesInserted++; } } else { charsInLine++; } } wrapped.append(chr); } result.setLinesInserted(linesInserted); result.setLines(lineCounter); result.setWrappedText(wrapped.toString()); return result; } /** * Fügt einen String in das Dokument ein. * * Diese Methode wird bei jedem Tastendruck vom Framework aufgerufen */ public void insertString(int offset, String insertString, AttributeSet arg2) throws BadLocationException { if (!lockedForChange) { boolean insertValid = true; if (validCharacters != null && insertString != null) { for (int i = 0; i < insertString.length(); i++) { String chr = String.valueOf(insertString.charAt(i)); if (validCharacters.indexOf(chr) == -1) { insertValid = false; } } } if (insertValid) { StringBuffer buf = getCompleteText(); StringBuffer oldText = getCompleteText(); buf.insert(offset, insertString); WrapResult result = wordWrap(buf, offset); if (result.getLines() <= maxRows) { deleteAndInsert(result.getWrappedText()); // offset berechnen offset += insertString.length(); offset += result.getLinesInserted(); } } } } /** * Prüft das Dokument ob es korrekt ist. * In diesem Fall ob die Anzahl der Zeichen pro Zeile und die Anzahl der * Zeilen stimmt */ protected boolean checkSyntax(String str) { return true; } public void remove(int fromIndex, int length) throws BadLocationException { if (!lockedForChange) { lockedForChange = true; int offset = fromIndex; StringBuffer buf = getCompleteText(); StringBuffer oldText = getCompleteText(); buf.delete(fromIndex, fromIndex + length); WrapResult result = wordWrap(buf, offset); if (result.getLines() <= maxRows) { deleteAndInsert(result.getWrappedText()); // offset berechnen offset += result.getLinesInserted(); } } lockedForChange = false; } /** * löscht den vorhandenen Text unf fügt neuen ein * * @param newText der neue Text */ public void deleteAndInsert(String newText) { try { remove(0, getLength()); if (newText != null) { super.insertString(0, newText, null); } } catch (BadLocationException e) { } } /** * gibt den kompletten Text zurück * @return den Inhalt */ public StringBuffer getCompleteText() { StringBuffer compText = new StringBuffer(); try { compText.append(getText(0, getLength())); } catch (BadLocationException e) { } return compText; } /** * maximale Anzahl Zeichen pro Zeile * * @return charsPerLine maximale Anzahl Zeichen pro Zeile */ public int getCharsPerLine() { return charsPerLine; } /** * Legt die maximale Anzahl Zeichen pro Zeile fest * * @param charsPerLine Anzahl Zeichen pro Zeile */ public void setCharsPerLine(int charsPerLine) { try { insertString(0, "", null); } catch (BadLocationException e) { // couldn't happen! } this.charsPerLine = charsPerLine; } /** * maximale Anzahl Zeilen * * @return maxRows Anzahl Zeilen */ public int getMaxRows() { return maxRows; } /** * legt die maximale Anzahl an Zeilen fest * * @param maxRows Anzahl Zeilen */ public void setMaxRows(int maxRows) { this.maxRows = maxRows; } /** * Diese Klasse speichert den Zustand einer Formatierung mit sämtlichen * relevanten Informationen */ private class WrapResult { /** Anzahl der Zeilen */ private int lines; /** Anzahl der eingefügten Zeilen */ private int linesInserted; /** Der formatierte Text */ private String wrappedText; /** * Gibt die Anzahl der Zeilen zurück * * @return the lines */ public int getLines() { return lines; } /** * Setzt die Anzahl der Zeilen * * @param lines the lines to set */ public void setLines(int lines) { this.lines = lines; } /** * Gibt den formatierten Text zurück * * @return the wrappedText */ public String getWrappedText() { return wrappedText; } /** * Setzt den formatierten Text * * @param wrappedText the wrappedText to set */ public void setWrappedText(String wrappedText) { this.wrappedText = wrappedText; } /** * Gibt die Anzahl der eingefügten Zeilen zurück * * @return the linesInserted */ public int getLinesInserted() { return linesInserted; } /** * Setzt die Anzahl der eingefügten Zeilen * * @param linesInserted the linesInserted to set */ public void setLinesInserted(int linesInserted) { this.linesInserted = linesInserted; } } }
  10. Man kann eigene Coding Conventions festlegen. Anhand dieser Einstellungen validiert Checkstyle dann über ein Projekt im Eclipse (sofern es für das Projekt aktiviert ist). Einzelne Packages abzuschalten funktioniert meines Wissens nach nicht, macht aber doch irgendwie auch keinen Sinn. Wofür brauchst du denn sowas? Gruß Sebastian
  11. Na ja, so mal ein paar Dinge welche helfen das ganze zu strukturieren: - verschiedene Sourcefolder (z.B. für jede Schicht einen eigenen, evtl. auch Schicht/api Schicht/impl. Also sowas wie gui/api, gui/impl für die Präsentationsschicht) - die Klassen sinnvoll in Packages unterteilen - keine direkten Abhängigkeiten über Schichten hinweg - keine Abhängigkeiten von api nach impl - je nach Größe auch verschiedene Projekte (z.B. niemals ein Framework zusammen mit der Anwendung in dasselbe Projekt packen) Ansonsten helfen Dinge wie UML für die Übersicht schon enorm. Ob man jetzt erst modelliert und dann programmiert oder aus dem Programmierten das Model erstellt bleibt jedem selbst überlassen. Mittlerweile muss ich sagen dass ich auf die Modellierung nimmer verzichten will. Wenn man sich mal etwas mit Eclipse/ECore beschäftigt und das ein oder andere Plugin hat dann verkürzt das die Entwicklungszeit schon ganz enorm.
  12. Wie hier schon geschrieben: Classpath != LibraryPath Starten mit dem VM-Argument: -Djava.library.path=pfad/zum/ordner/in/der/die/dll/liegt
  13. Hier: [news.eclipse.platform.swt] Re: How to print the contents of a ViewPart
  14. so? package test; import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JTextArea; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.BadLocationException; public class TestTextChange { /** * @param args */ public static void main(String[] args) { JFrame frame = new JFrame("Test"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JTextArea area = new JTextArea(); area.setColumns(30); area.setRows(10); area.getDocument().addDocumentListener(new DocumentListener(){ @Override public void changedUpdate(DocumentEvent e) { try { System.out.println("text changed: " + e.getDocument().getText(0, e.getDocument().getLength())); } catch (BadLocationException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } @Override public void insertUpdate(DocumentEvent e) { try { System.out.println("text inserted: " + e.getDocument().getText(0, e.getDocument().getLength())); } catch (BadLocationException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } @Override public void removeUpdate(DocumentEvent e) { try { System.out.println("text removed: " + e.getDocument().getText(0, e.getDocument().getLength())); } catch (BadLocationException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } }); frame.add(area, BorderLayout.CENTER); frame.pack(); frame.setVisible(true); } }
  15. Oh gott, wie kann man so faul sein und den Code nichtmal anschauen bevor man in das nächstbeste Forum "trollt" und es auch noch schafft innerhalb von kürzester Zeit zwei identische Threads zu erstellen. Die Menschheit verdummt doch von Tag zu Tag...
  16. Und was willst du jetzt? Auch wenn du kein C kannst ist der Code sehr Java-Ähnlich. <funktionsname> <rückgabetyp> (<parametertyp 1> <parameter name1>,..) Und der rest ist gleich, selbst die Datentypen sind identisch. Also versuch dich doch mal selbst dran..
  17. Auslesen oder reinschreiben -> beides das gleiche gepfusche Du könntest über java.awt.Robot Mausklicks simulieren, geht aber imho auch nur wenn die Javaanwendung den Focus hat. Somit bringt es dir nix da du quasi im "leeren rumklickst".
  18. Die ganze Idee bringt schon so viel Komplexität und Fehleranfälligkeit mit Sich dass man sowas glaub ich auch nicht irgendwo produktiv laufen lassen könnte. Für mich hört sich das eher nach so einem kranken Entwicklertest(tool) mit hässlicher UI und ohne Fehlerhandling an *gg*
  19. Keine Ahnung wie das geht. - Ich bin Javaentwickler, kein C++ oder Assemblerguru Es wird wohl über die aktuelle Mausposition die darunterliegende Komponente ermittelt. Über diese Komponente wird wohl die entsprechende Position im Speicher geholt und der Wert ausgelesen. Natürlich ist Java naheliegend, aber eben nur wenn es eine direkte Schnittstelle zum Programm gibt. Wenn du eine exe-Datei hast und dort eingreifen willst geht es ja auch nicht so ohne weiteres. Und für das was du benötigst ist es eigentlich sinnvoller das ausführbare Programm ein Stück weit auser acht zu lassen, das wichtige ist dass die Anwendung in der JavaVM läuft und dort musst du irgendwie eingreifen. Alternativ schau dir mal nach C/C++/C#-Tutorials um welche Anwendungen bzw. Teile davon grabben können. Mit sowas kommst du sicher auch an das Applet ran und auf umwegen wohl auch auf die Inhalte. Ist nur die Frage was du damit anfangen kannst wenn irgenwelche bytes rauskommen
  20. Hi, um das ganze aus Eclipse zu exportieren musst du durch den Export-Wizard gehen, das ist schon richtig. Auf der dritten Seite oder so gibts dann die Möglichkeit eine Starter-Klasse in der Manifest-Datei zu hinterlegen. Dort musst du die Klasse mit der main(..)-Methode eintragen. Dann hast du im Eclipse für das Projekt sicherlich .jar-Dateien integriert (rechtsklick aufs Projekt -> Eigenschaften -> Buildpath). Dort sich jar-Dateien hinterlegt. Diese Jar's benötigst du zum externen starten. Somit kopierst du dir aus deinem Eclipseprojekt (über die View "Navigator" oder über das Dateisystem/Explorer) die Jar-Dateien in denselben Ordner in dem die exportierte Jar-Datei liegt. Dann per CMD in den Ordner wechseln und die Mainklasse ausführen: java -cp jar1;jar2;jar3 meine.test.Klasse nach dem "-cp" müssen sämtliche Jar-Dateien im Verzeichnis einzeln aufgeführt werden, mit einem Semikolon getrennt. Sinnvoller wäre es aber wohl die JAR-Dateien in der MANIFEST.MF deiner "Start-JAR" zu hinterlegen - unter dem Punkt "CLASSPATH: ". Schau dir mal die entsprechenden Kapiteln in Java Insel u.s.w. an..
  21. Das kannste so gut wie vergessen. Schnittstellentechnisch kommst du nicht ran, somit bleibt nur die Möglichkeit direkt in die VM reinzugrätschen. Und dafür ist ein bisschen mehr Wissen von Nöten wie ein normaler Javaentwickler hat. Desweiteren wirst du mit Java nicht sehr weit kommen. Wohl am ehesten C oder Assembler und dann auf in den Register-Dschungel Es gibt die Möglichkeit (z.B. mit C oder C++) an die Adresse eines Textfelds ranzukommen über dem sich z.B. die Maus gerade befindet. Damit kommst du auch an die Inhalte ran. Wie und ob das bei einem Java-Applet funktioniert weiß ich nicht. Vor allem bei einer JTable wirst du da wohl schnell an die Grenzen stoßen.
  22. Ups, hab Fehler. Sorum natürlich: Mit ner JAR-Datei: In der Manifest beim CLASSPATH-Eintrag die benötigten Jars anhängen Bei ner "entpackten" Anwendung: java -classpath jar1.jar;jar2.jar;jar3.jar meine.Klasse
  23. Exportier deine Anwendung aus Eclipse als JAR-Datei. Pack die exportierte Datei und sämtliche andere benötigten Bibliotheken in den selben Ordner. Dann starten über CMD mit java -classpath alle.jar.dateien.jar -jar meine.Klasse Und dann, bitte, schau dir mal Javagrundlagen, Objektorientierte Programmierung, Sun Coding Conventions... an Gruß
  24. Du solltest nicht über ne Technologie herziehen wenn du sie nicht verstanden hast. Ablauf: User -> JSP (Formular ausfüllen) -- POST --> Servlet (Datenverarbeiten) Servlet -> JSP (Fehler/Nachrichten ausgeben) Im Servlet kannst du mittels response.setAttribute(..), session.setAttribute(..) Attribute im Request/in der Session speichern. Auf die kannst du in der JSP wieder zugreifen. Mittels Java, JSLT u.s.w.
  25. Dann schau dir mal eines der tausend Java+Datenbank Tutorials an. Es hat wenig Sinn hier nen 5-Seitigen Post über Java und Datenbanken zu verfassen wenn die ganzen Infos schon im Netz vorhanden sind. Mal so ein kleiner Vorgeschmack von dem was dir Google hergibt: Tutorial: JSF (JavaServer Faces) & Apache MyFaces Employing J2EE: JSF-Database Demo Tutorial: Build a Web Application (JSF) Using JPA JavaServer Faces - jsf/database tutorial JSF Tutorial for Beginners First Java Server Faces Tutorial (JSF) - Eclipse ff Gruß Sebastian

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...