Vector mit Objekten sortieren,Videos mit JMF wiedergeben

Status
Nicht offen für weitere Antworten.

iTobi

Mitglied
Hallo ich bin neu hier,Schüler und habe seit 2 Jahren Informatik als Unterrichtsfach.
Wir haben ein Projekt "Mitarbeiterverwaltung" gestartet , das ich mit 101/100 Punkten abgescholssen habe.:toll:
Da mich das Programmieren und insbesondere diese Verwaltung sehr interessiert habe ich in meiner Freizeit eine Produkt- und eine Kundenverwltung hinzugefügt.
Als Produkt Beispiele habe ich Games genommen (XBOX,PC, PS3,...).
Bis vor einer Woche liefen diese 3 Verwaltungen noch über Arrays der Klassen Mitarbeiter,Kunde und Produkt ab.
Diese Woche führte uns unser Lehrer in das Arbeiten mit Vectoren ein und wir sollten unsere Verwaltungen nach Vector umschreiben.
Nachdem ich das gemacht habe fiel mir auf das meine Sortieralgorithmen nicht mehr funktionieren.:(

Also zum ersten Problem:

Ich würde gerne meinen Vector<Produkt> sortieren und ihen anschließend in einer jList in einer GUI ausgeben,also wäre es gut wenn ich den Vector direkt sortieren könnte.
Ich würde meine Produkte gerne nach Name, System, Genre, Preis und ID sortieren.
Dazu habe ich mich an einer Lösung mit Hilfe von Bubblesort probiert, die zwar funktioniert, aber ich kann nicht nach oben genannten Kriterien suchen.
Also habe ich mich den ganzen Nachmittag lang durch Google geklickt und bin nicht zu einer Lösung gekommen.
Es wäre sehr freundlich wenn mir da jemand zum Beispiel mit Beispielcodes weiterhelfen könnte und mir schülerfreundlich erklären könnte wie es funktioniert.

Zum zweiten Problem:

Da ich wie oben beschreiben meine Produkte vorerst auf Computerspiele beschränkt habe wollte ich in dem Produktinformationsfenster über ein Button ein Trailer (nach avi umgewandelde flv.-Dateien) zu dem entsprechenden Spiel abspielen. Dazu habe ich das JMF installiert, da ich dachte das wäre eine sehr einfache Lösung, was sich leider als Fehlschlag erwies.
Im Internet habe ich dann eine Lösung gefunden, die allerdings nicht richtig funktioniert, da ihm die Mp3-Spur hinter dem avi-file nicht passt und ich keine Ahnung habe wie ich die ändern könnte.
(und ich mich mit dem Streamingzeugs und was dahinter abläuft nicht so sonderlich gut auskenne)
Ich brauche also ein Quellcode Beispiel mit dem ich entweder mit Hilfe des JMFs oder ohne JMF ein Video in einem Fenster abspielen kann.
Dabei ist es wichtig das ich einen Dateipfad mitgeben kann, da ich ja meherer Produkte verwalten muss.
Auch hier bitte ich um eine schülerfreundliche Erklärung.

Betroffene Quellcodes:

Problem 1:

Java:
import java.util.*;

class VectorSortTest
{
  public static void main(String args[])
  {
    Vector<Produkt> pfeld = new Vector<Produkt>(11);

    pfeld.addElement( new Produkt(1,"SHAUN WHITE SNOWBOARDING",
        "XBOX 360/Playstation 3/PC/PSP/Wii","cover_produkt/shaun-white-snowboarding.jpg",
        29.95,"trailer_produkt/shaun_white_snowboarding.avi","Auf der Spitze des Berges wehte...?","Sport"));
    pfeld.addElement( new Produkt(2,"WHEELMAN","XBOX 360/Playstation 3/PC",
        "cover_produkt/wheelman.jpg",49.95,"trailer_produkt/shaun_white_snowboarding.avi",
        "Vin Diese....",""));
    pfeld.addElement( new Produkt(3,"SPLINTER CELL CONVICTION",
        "XBOX 360/PC","cover_produkt/scconviction.jpg",0.0,
         "trailerprodukt/shaun_white_snowboarding.avi",  
         "Release noch ausstehend","Action"));

    //unsortiertes Feld
    for(int i=0;i<pfeld.size();i++)
    {
      System.out.println(pfeld.elementAt(i));
    }
    
    //sortiertes Feld
     for(int i=0;i<pfeld.size();i++)
    {
      System.out.println(pfeld.elementAt(i));
    }
    

    


  }

 }

Meine Lösung zum Sortieren mit Bubblesort,die wie gesagt nicht richtig funktioniert:

Java:
public static void bubblesort(Vector<Produkt> feld)
   {
        for (int i=0; i<feld.size(); i++)
      {  for (int k=1; k<feld.size()-i; k++)
       {  if (feld.elementAt(k-1).getGenre().equals(feld.elementAt(k).getGenre()))
         {
           Vector <Produkt> help= new Vector <Produkt> (2);
           //int help = feld[k-1];
           help.setElementAt(feld.elementAt(k-1),1);
           //feld[k-1]= feld[k];
           feld.setElementAt(feld.elementAt(k),k-1);
           //feld[k] = help;
           feld.setElementAt(help.elementAt(1),k);
         }
       }
      }
     for(int i=0;i<feld.size();i++)
    {
      System.out.println(feld.elementAt(i));
    }
   }

Problem 2:

Java:
import java.applet.*;
import java.awt.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
import java.util.*;
import javax.media.*;

/**
 * Demonstrate simple code to play a movie with Java Media Framework.
 *
 * @author Ian F. Darwin, [url=http://www.darwinsys.com/]Ian Darwin: Java & Unix Consultant/Speaker[/url]
 * @version $Id: JMFPlayerTrailer.java,v 1.9 2004/02/09 03:21:20 ian Exp $
 */

public class JMFPlayerTrailer extends JPanel implements ControllerListener {



  /** The player object */
  Player thePlayer = null;

  /** The parent Frame we are in. */
  JFrame parentFrame = null;

  /** Our contentpane */
  Container cp;

  /** The visual component (if any) */
  Component visualComponent = null;

  /** The default control component (if any) */
  Component controlComponent = null;

  /** The name of this instance's media file. */
  String mediaName;

  /** The URL representing this media file. */
  URL theURL;

  /** Construct the player object and the GUI. */
  public JMFPlayerTrailer(JFrame pf, String media) {
    parentFrame = pf;
    mediaName = media;
    // cp = getContentPane();
    cp = this;
    cp.setLayout(new BorderLayout());
    try {
      theURL = new URL(getClass().getResource("."), mediaName);
      thePlayer = Manager.createPlayer(theURL);
      thePlayer.addControllerListener(this);
    } catch (MalformedURLException e) {
      System.err.println("JMF URL creation error: " + e);
    } catch (Exception e) {
      System.err.println("JMF Player creation error: " + e);
      return;
    }
    System.out.println("theURL = " + theURL);

    // Start the player: this will notify our ControllerListener.
    thePlayer.start(); // start playing
  }

  /** Called to stop the audio, as from a Stop button or menuitem */
  public void stop() {
    if (thePlayer == null)
      return;
    thePlayer.stop(); // stop playing!
    thePlayer.deallocate(); // free system resources
  }

  /** Called when we are really finished (as from an Exit button). */
  public void destroy() {
    if (thePlayer == null)
      return;
    thePlayer.close();
  }

  /** Called by JMF when the Player has something to tell us about. */
  public synchronized void controllerUpdate(ControllerEvent event) {
    // System.out.println("controllerUpdate(" + event + ")");
    if (event instanceof RealizeCompleteEvent) {
      if ((visualComponent = thePlayer.getVisualComponent()) != null)
        cp.add(BorderLayout.CENTER, visualComponent);
      if ((controlComponent = thePlayer.getControlPanelComponent()) != null)
        cp.add(BorderLayout.SOUTH, controlComponent);
      // re-size the main window
      if (parentFrame != null) {
        parentFrame.pack();
        parentFrame.setTitle(mediaName);
      }
    }
  }

  public static void main(String[] argv) {
    JFrame f = new JFrame("JMF Player Demo");
    Container frameCP = f.getContentPane();
    JMFPlayerTrailer p = new JMFPlayerTrailer(f,
        argv.length == 0 ? "file"
            : argv[0]);
    frameCP.add(BorderLayout.CENTER, p);
    f.setSize(400, 400);
    f.setVisible(true);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  }
}

Die Klasse Produkt:

Java:
public class Produkt
{
  protected String name, system, cover, trailer, beschreibung, genre,str;
  protected int id;
  protected double preis;


  public Produkt (int mid, String mname, String msystem,String mcover,double mpreis,String mtrailer,String mbeschreibung,String mgenre )
  {
    id=mid;
    name=mname;
    system=msystem;
    cover=mcover;
    preis=mpreis;
    trailer=mtrailer;
    beschreibung=mbeschreibung;
    genre=mgenre;
  }

  public int getId()
  {
    return  id;
  }
  public String getSystem()
  {
    return  system;
  }
  public String getName()
  {
    return  name;
  }
  public double getPreis()
  {
    return  preis;
  }
  public String getBeschreibung()
  {
    return beschreibung;
  }
  public String getGenre()
  {
    return  genre;
  }
  public String getCover()
  {
    return  cover;
  }
  public String getTrailer()
  {
    return  trailer;
  }
  public String getStr()
  {
    return  str;
  }

  public void setId(int mid)
  {
    id=mid;
  }
  public void setSystem(String msystem)
  {
    system= msystem;
  }
  public void setName(String mname)
  {
    name= mname;
  }
   public void setPreis(double mpreis)
  {
    preis= mpreis;
  }
   public void setBeschreibung(String mbeschreibung)
  {
    beschreibung= mbeschreibung;
  }
   public void setGenre(String mgenre)
  {
    genre= mgenre;
  }

  public String toString()
  {
    return "ID Nr.:"+id+"  "+genre+" "+name+" "+system;
  }
  public boolean equals(Produkt mA)
  {
    if(id==mA.getId())
    {
      return true;
    }
    else
    {
      return false;
    }
  }
  

  


}

Danke im Vorraus für eure Mithilfe.
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
Problem 1
> if (feld.elementAt(k-1).getGenre().equals(feld.elementAt(k).getGenre()))

hier tauscht du nur, wenn das Genre gleich ist, wieso?
wenn beide Elemente das gleiche Genre haben, welchen Sinn hat es dann, ihre Position zu vertauschen?

interessant wird es nur, wenn sich die beiden Elemente unterscheiden,
da du recht viele Attribute betrachtest, schreibe dir eine Hilsmethode
> int compare = compare(element1, element2);
mit Rückgabewert < 0 wenn element1 < element2 oder Rückgabewert 0 oder 1,
so funktioniert das im bekannten Comparable-Framework von Java, da gibts auch eine fertige sort-Methode für Vektoren

für dein bubbleSort ginge auch eine einfachere Methode mit boolean Rückgabewert
> boolean smaller = isSmaller(element1, element2)

innerhalb dieser Methode musst du die einzelnen Attribute durchgehen,
für String gibt es beispielsweise die Standard-compareTo-Methode, die eine negative Zahl, 0, oder eine positive Zahl zurückgibt,
lernt man beim Kennenlernen der Collection + Comparable gleich mit
Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 12 Datenstrukturen und Algorithmen

wann immer ein Attribut für beide Elemente gleich ist, wird das nächste vergleichen

----------

noch zu deinem Swap in Bubblesort:
du musst keine Extra-Liste anlegen, eien einfache Variable reicht:
Produkt temp = liste k;
liste k-1 = liste k;
liste k = temp;
 

iTobi

Mitglied
Hallo SlaterB

Danke für deinen tipp, das mit dem comparable habe ich auch schon versucht , hat auch geklappt aber ich war nicht in der Lage nach meinen benötigten Attributen zu sortieren . Beim vertauschen in der bubblesort haben wir das mit einer einfachen variablen gemacht , aber ich dachte beim Vector müsste ich einen Hilfsvector einführen. Danke nochmal , insbesondere für den Link, sowas hilft mir am besten.
Für das 2. Prob hast du keine Idee?
 

iTobi

Mitglied
Über weitere Anregungen, was man in einer solchen Verwaltung noch außgewöhnliches und interessantes machen kann wäre ich ebenfalls sehr dankbar
 
S

SlaterB

Gast
> Für das 2. Prob hast du keine Idee?

das hast du unverblümt erkannt ;)

habe übrigens dein Posting editiert, durch die langen Texte waren die Code-Boxen ja zehn Bildschirme breit..
 

iTobi

Mitglied
Danke ,mir ist auch auffgefallen das es sehr viel ist aber ich kenn mich hier noch nich so richtig aus (gefällt mir aber gut was ich bis jetzt gesehen habe) und mit kompakt schreiben hab ich´s nicht so
 

iTobi

Mitglied
Alos ich hab eine Lösung gefunden:
Mit minsort funktioniert das nämlich seltsamerweise:
Java:
public void SortN(Vector<Produkt> pfeld)
    {
       int minpos;
    for (int i=0; i < pfeld.size(); i++){
      minpos = i;
       for (int k=i+1; k < pfeld.size(); k++){
        if ((pfeld.elementAt(k).getName()).compareTo(pfeld.elementAt(minpos).getName())<=0) {
         minpos = k;
        }
       }
       if (minpos > i) { // Vertausche
        Produkt help = pfeld.elementAt(minpos);
        pfeld.setElementAt( pfeld.elementAt(i)  , minpos);
        pfeld.setElementAt(help , i);
       }
     }
     setProduktListe(pfeld);
    }
Das mit dieser comparable- Methode hab ich auch probiert aber es hat icht so richtig geklappt , trotzdem Danke
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Vector Strings in Array splitten Allgemeine Java-Themen 6
G Fehler mit Vector Allgemeine Java-Themen 3
M String Array Vector komprimieren und verschicken Allgemeine Java-Themen 3
P Vectorelemente in einen anderen Vector kopieren Allgemeine Java-Themen 12
U Vector aus Oberklasse spezialisieren Allgemeine Java-Themen 2
R Vector in JList Allgemeine Java-Themen 11
M Cast double[]-->Object[] oder Vector<double[]> Allgemeine Java-Themen 3
R Threads korrekte Synchronisation bei Vector und ArrayList Allgemeine Java-Themen 6
H Index Out of Bounds bei Vector Allgemeine Java-Themen 4
H Java Vector Frage Allgemeine Java-Themen 9
E NetBeans Vector durch ArrayList ersetzen Allgemeine Java-Themen 4
C Vector/Point-Problem Allgemeine Java-Themen 3
M Buffer-Vector einzeln und zusammen synchronisieren Allgemeine Java-Themen 4
B Suchalgorithmus der Klasse Vector Allgemeine Java-Themen 5
X Vector Allgemeine Java-Themen 3
S 2D Vector speziell ausgeben. Allgemeine Java-Themen 2
S Vector in Vector gespeichert, wie greift man darauf zu? Allgemeine Java-Themen 3
C Swing JTable Vector aus DB adden Allgemeine Java-Themen 3
R Vector.clear() oder neu initialisieren Allgemeine Java-Themen 3
S vector & strings Allgemeine Java-Themen 26
X Vector in Intervall-Menge umwandeln Allgemeine Java-Themen 4
D Array oder Vector in Enum Deklarieren Allgemeine Java-Themen 3
J Erweiterte For-Schleife mit Vector Allgemeine Java-Themen 5
G JComponent in Vector - wie klonen? Allgemeine Java-Themen 7
V Performancefrage int-Vector/Stack Allgemeine Java-Themen 10
N HashMap<String,Vector<String>> a = new HashMap<String,Vector<String>>(); Allgemeine Java-Themen 4
H GUI: RectangleDrawer - zu viele Elemente im Vector für die paint-Methode Allgemeine Java-Themen 6
S JList in Vector Allgemeine Java-Themen 3
MQue Vector<..> nicht verwenden Allgemeine Java-Themen 4
H Vector<Character> zu char[] castern Allgemeine Java-Themen 2
T Element aus Vector entfernen Allgemeine Java-Themen 4
Spot84 Vector nach Ressourcetyp sortieren Allgemeine Java-Themen 4
M get Funktion von Vector Allgemeine Java-Themen 4
N wie greife ich auf hashmap in vector zu Allgemeine Java-Themen 9
V NullPointerException bei Vector Allgemeine Java-Themen 2
E einfache Frage zu Vector Allgemeine Java-Themen 8
K Serialisierung von Hashmap in Vector Allgemeine Java-Themen 3
G Vector beim Initialisieren befüllen Allgemeine Java-Themen 4
G Vector addAll Allgemeine Java-Themen 5
B sorteiren von Datein nach Zeitstempel in einem Vector Allgemeine Java-Themen 5
W [solved] Vector sortieren (Collection / Comparable?) Allgemeine Java-Themen 7
MQue Vector Allgemeine Java-Themen 7
F Vector in eine Datenbank speichern? Allgemeine Java-Themen 3
P Vector auf JTree Allgemeine Java-Themen 6
P dynamisches Array / Vector Allgemeine Java-Themen 2
P JTable/Vector Allgemeine Java-Themen 5
T Vector und remove? Allgemeine Java-Themen 13
T Vector in JAVA ? Allgemeine Java-Themen 10
P Vector in vielen Klassen Allgemeine Java-Themen 21
MQue Vector implementieren Allgemeine Java-Themen 2
MQue Vector<State> Allgemeine Java-Themen 2
O hilfe bei Vector frage Allgemeine Java-Themen 6
F Synchronisation + Vector/ArrayList/LinkedList Allgemeine Java-Themen 7
Z Elemente in Vector nach Häufigkeit sortieren. Allgemeine Java-Themen 13
H java.util.Vector langsam ? Allgemeine Java-Themen 5
H Vector<T>[] vecs = new Vector<T>[10]; geht nicht Allgemeine Java-Themen 2
N Java API java.util.vector Allgemeine Java-Themen 3
G Vector erweitern Allgemeine Java-Themen 4
S Vector sortieren nach Objekt-Info? Allgemeine Java-Themen 9
A Probleme mit Vector Allgemeine Java-Themen 6
M Vergleich im geordeten Vector und Methodenaufruf Allgemeine Java-Themen 2
J Vector - Wert ersetzen Allgemeine Java-Themen 14
J Vector - Boolean Allgemeine Java-Themen 24
M Vector zu einem byte[] Allgemeine Java-Themen 5
J Vector<Shape> Speichern [gelöst] Allgemeine Java-Themen 11
Y Array mit ID in Vector Allgemeine Java-Themen 6
T Vector <-> double Allgemeine Java-Themen 4
T ArrayList bzw. Vector per set-Methode? Allgemeine Java-Themen 3
T ArrayList oder Vector als Parameter? Allgemeine Java-Themen 7
M Vector add() unchecked? Allgemeine Java-Themen 5
M Probleme und Zeitdruck: Kunden-DB (Vector) Allgemeine Java-Themen 13
T Vector Array Allgemeine Java-Themen 5
M Kunden-DB mit Vector Allgemeine Java-Themen 9
J Vector sortieren Allgemeine Java-Themen 3
M Vector - contain Allgemeine Java-Themen 13
C String und char[] / String[] und Vector Allgemeine Java-Themen 21
N Vector -> 2Diminsonaler Array Allgemeine Java-Themen 10
N Alledateien in einem Ordner in ein Vector speichern Allgemeine Java-Themen 19
K Object nach Vector konvertieren Allgemeine Java-Themen 3
Z ResultSet in Array oder Vector schreiben! Allgemeine Java-Themen 2
C vector von vector sortieren Allgemeine Java-Themen 4
D Vector in String Allgemeine Java-Themen 5
J Von Collection zu vector Allgemeine Java-Themen 5
D Vector in Datei schreiben Allgemeine Java-Themen 18
I Vector serialisieren: StackOverflow Allgemeine Java-Themen 13
H Vector in ein File-Array umwandeln Allgemeine Java-Themen 2
J User Klasse in den Vector, Object Klasse wieder raus... Allgemeine Java-Themen 4
K vector, synchronized und mehrere methoden Allgemeine Java-Themen 3
Zrebna Wieso sollte man Null-Prüfungen nicht mit Optional-Objekten nutzen? Allgemeine Java-Themen 13
B Sent and Receive Funktionen zwischen Objekten ermöglichen? Allgemeine Java-Themen 8
A Objekt aus anderen Objekten machen Allgemeine Java-Themen 8
PCOmega137 Objekten zufällig erzeugte Namen geben Allgemeine Java-Themen 2
T Speichern von Objekten Allgemeine Java-Themen 2
D Serialisierung und Deserialisierung von Objekten - Frageprogramm Allgemeine Java-Themen 4
M Wie kann man eine void Methode mit Variablen von zwei verschiedenen Objekten ausführen? Allgemeine Java-Themen 15
M loeschen von objekten Allgemeine Java-Themen 22
S Parametrisierte jUnit 5-Tests mit eigenen Datentypen/Klassen-Objekten als Test-Parameter Allgemeine Java-Themen 0
F Best Practice Große Anzahl an Objekten speichern und lesen Allgemeine Java-Themen 19
M Array aus Thread Objekten erstellen Allgemeine Java-Themen 2
K Vergleich von Strings von Objekten Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben