Zum Inhalt springen

herzchen

Mitglieder
  • Gesamte Inhalte

    6
  • Benutzer seit

  • Letzter Besuch

  1. <!-- -->Hi Leute, ich habe gestern nun über 4 Stunden damit verbracht, sämtliche englischsprachige Foren, Java.sun-Links, Code-Beispiele und Eigenideen zu durchforsten und auszuprobieren. Allgemein erstmal: Ich habe eine SQL Abfrage in eclipse mit JOINS, die ich in ein JTable darstellen möchte. Da ich mich nicht gut mit TableModels auskenne, habe ich mir die empfohlene JDBCAdapter-Klasse heruntergeladen, die die Daten automatisiert in das JTable packt. Gesehen habe ich schon, dass man das auch mit Vektor lösen kann und einen anderen Konstruktor als den Standard (new JTable()) nehmen kann. Das Auslesen von 22 Datensätzen dauert enorm (Datenbank ist MySQL in phpMyAdmin), also habe ich im SQL-Statement ein Limit von 10 Datensätzen festgelegt. Dauert zwar auch noch, aber nich mehr so lange. Jetzt fängt's an kompliziert zu werden. Ich möchte eine Blätterfunktion einbauen. Hierfür habe ich einen Button unterhalb des JTables angelegt und ein ImageIcon hinzugefügt (2 Pfeile), um es eindeutig zu machen. Normalerweise, so habe ich es theoretisch verstanden, geht man hin, und legt ein AbstractTableModel-Type an, an dem man die Methoden fireTableChanged() (o.ä.) aufrufen kann. Hinter dem Blättern-Button habe ich Code hinterlegt, der die nächsten 10 Datensätze aufrufen soll. Ich habe jetzt viel gelesen über eine Kopie der aktuellen Tabelle anlegen (weil zurückblättern soll man ja auch können ) und dann anzeigen mit repaint();. Würde jetzt zu viel werden alle Versuche hier zu posten....also habe ich eine 2. Tabelle angelegt, diese nochmal mit einer Datenbankabfrage gefüllt (könnt ihr mal schauen unten ob die funktionieren kann) und die erste Tabelle visible(false) gesetzt. Die 2. Tabelle wird mir auch angezeigt, zumindest die Spalten und die erste tritt aus dem Blickfeld hinaus. Aber Datensätze werden keine angezeigt. Syntaxtechnisch gibt er mir aber keine Fehler aus. Also, wofür ich dankbar wäre: - keine komplizierten Codebeispiele (es sei denn, es geht nicht anders), denn ich brauche einfach nur eine Grundlage, wie man das JTable am EINFACHSTEN updaten kann, ohne vorher den gesamten Programmcode wieder umändern zu müssen. Den Rest bastel ich selber.. - keine Links (davon hab ich wirklich genug, hab so viel gegoogelt!!) (achso hier noch ein Danke an den Herrn mit dem Tipp für die Screensize, hat funktioniert ) Hier mein Code: (Anm. Jaraz: Bitte Code Tags benutzen) Konstruktor aufrufen und SQL-Abfrage festlegen (ist immer gleich) public clsMain() { query = "SELECT t1.`Nr`, t1.`Titel`, t1.`Laenge`, t1.`Erscheinungsdatum`, t2.`Bezeichnung`, t3.`Status`, t4.`Nachname`, t5.`Format`" + "FROM `tblfilm` t1 INNER JOIN `tblkategorie` t2 ON t2.`ID` = t1.`Kategorie`, " + "`tblfilm` tmp1 INNER JOIN `tblstatus` t3 ON t3.`ID` = t1.`Status`, " + "`tblfilm` tmp2 INNER JOIN `tbldarsteller` t4 ON t4.`ID` = t1.`Darsteller`, " + "`tblfilm` tmp3 INNER JOIN `tblformat` t5 ON t5.`ID` = t1.`Format` " + "GROUP BY t1.`Nr` LIMIT 10"; } In der Main-Methode dann (u.a.): /* DataModel ruft Klasse JDBCAdapter auf * JDBCAdapter stellt Verbindung zur Datenbank her und * führt die Abfrage aus. Das Abfrageergebnis wird * anschliessend in das JTable "table" abgespeichert * und angezeigt. */ dataModel = new JDBCAdapter( "jdbc:mysql://localhost/dbdvd", "com.mysql.jdbc.Driver", "root", "12345678" ); dataModel.executeQuery(query); //Menübar erstellen popup = clsElements.PopMenDemo(); table = new JTable(dataModel); table.setComponentPopupMenu(popup); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); scrollp = new JScrollPane(table); //Panel erstellen mit dem Titel: Übersicht jpan = clsElements.Create_Panel("Uebersicht"); jpan.setBorder(BorderFactory.createEmptyBorder(35,10,10,10)); jpan.add(scrollp); //Button zum Vorwärtsblättern erstellen und Icon hierfür hinzufügen //Icon wird in oberste Hierarchie des packages angelegt jbuttforw = clsElements.Create_Button("", 50,20,720,225); ImageIcon icon = new ImageIcon( "forw.gif" ); jbuttforw.setIcon(icon); jbuttforw.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { int icount = table.getRowCount(); String nquery = "SELECT t1.`Nr`, t1.`Titel`, t1.`Laenge`, t1.`Erscheinungsdatum`, t2.`Bezeichnung`, t3.`Status`, t4.`Nachname`, t5.`Format`" + "FROM `tblfilm` t1 INNER JOIN `tblkategorie` t2 ON t2.`ID` = t1.`Kategorie`, " + "`tblfilm` tmp1 INNER JOIN `tblstatus` t3 ON t3.`ID` = t1.`Status`, " + "`tblfilm` tmp2 INNER JOIN `tbldarsteller` t4 ON t4.`ID` = t1.`Darsteller`, " + "`tblfilm` tmp3 INNER JOIN `tblformat` t5 ON t5.`ID` = t1.`Format` " + "WHERE t1.`Nr` > "+icount+ " GROUP BY t1.`Nr` LIMIT 10"; dm = new JDBCAdapter( "jdbc:mysql://localhost/dbdvd", "com.mysql.jdbc.Driver", "root", "12345678" ); dm.executeQuery(nquery); tableUPD = new JTable(dm); scr = new JScrollPane(tableUPD); jpan.add(scr); table.setVisible(false); tableUPD.setVisible(true); jf.getContentPane().add(tableUPD); jf.repaint(); } }); jf.getContentPane().add(jbuttforw); //Panel dem aktuellen Frame hinzufügen, alles sichtbar machen jf.getContentPane().add(jpan); jf.setVisible(true); Was ist verkehrt? Ist die 2. SQL-Abfrage mit dem >10 richtig oder, weil t1 die tblfilm-Tabelle ist. Aber tblfilm nimmt er nicht an. Und Datensätze zeigt er in dem 2. Table auch nicht an, nur die Spaltennamen. Für jeden Tipp dankbar! Herzi
  2. Hallo Leute, gibt es ein Programm (muß nicht unbedingt Freeware sein), was Dateien im cda-Format, quasi CD-Files in MP3s umwandeln kann? Würde gerne CDs auf meinen MP3-Player überspielen. Und noch eine Frage: seit neuestem ist es üblich, nur noch einen Index auf der CD zu hinterlassen für einen Leseanfang. Daraus kann ich auf dem PC nicht ersehen, wo welche Musikdatei liegt. Kann man das umgehen? Gruß herzchen
  3. <!-- -->Danke, mir ist schon klar, dass das System nicht erraten kann, wohin ich die Elemente platziert haben möchte. Das GridLayout - so habe ich es mir damals angelesen - ist ein tabellarisches Layout, was passend eigentlich ist für mein JTable und die Steuerelemente Buttons usw. In den Beispielen bei dpunkt.de sind auch immer nette Bildchen zu den vorherigen Codebeispielen, aber dann hat man eben entweder alles nacheinander platziert, dann habe ich .NORTH .SOUTH und die ganzen Richtung ausprobiert, das war auch alles kein Problem, funktioniert ja auch. Aber man hat eben keine Möglichkeit (so verstehe ich das zumindest) wie in HTML hinzugehen und eine Webseite tabellarisch zu gestalten. Das in Spalte Y, Zelle X ein Button gehört usw. Oder ich wende es einfach falsch an, was ich eher vermute. Also meine Reihenfolge schaut wie folgt aus: - Zuerst ein Frame erstellen, damit's nicht zu nackt aussieht: // TODO Auto-generated method stub jf.setDefaultCloseOperation(EXIT_ON_CLOSE); //Titel, Größe und Startposition für Frame festlegen jf.setTitle("DVD-Verwaltung"); jf.setSize(800,600); jf.setLocation(250, 250); Anschließend einen Panel mit scrollpane: jpanel = new JPanel(new GridLayout(0,1)); jpanel.setBorder( BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), title)); //jpanel.setLayout(new GridLayout(1,4)); jpanel.add(scrollp); jpanel.setVisible(true); Und nen Testbutton: jbutton.setText(text); jbutton.setLocation(loc1,loc2); jbutton.setSize(siz1,siz2); wobei ich die Elemente in Funktionen einer clsElements-Klasse geschrieben habe und in einer clsMain versuche, die notwendigen Elemente aufzurufen und geeignet zu platzieren. Das getScreenSize kannte ich zum Beispiel noch nicht, ist wieder ein Ansatz mit dem ich arbeiten kann. Also ich schnupper mal in die Links, Thx!
  4. Hi, wie schaut es aus mit Oberflächen in Java. Ich selber habe schon darin programmiert, jedoch hatte ich immer das Problem, dass ich fix angeben musste (bei einem GridLayout), welche Position das Element wie ein Jlabel zum Beispiel, haben soll. Auch vom JFrame die Start-up-Position muss ich mit ".setLocation" fix angeben, da er sonst nicht geladen wird. Welche Alternativen gibt es dazu, nicht jeder hat dieselbe Bildschirmauflösung, das muss doch auch einfacherer gehen, oder? Gruß Herzchen
  5. yepp, hatte zwischenzeitlich eine Meldung von Java beim Installieren bekommen, weil ich es natürlich genau umgekehrt installiert hatte *tz* Ciao
  6. Hello there, weil ich meinen Rechner neu mache, müsste ich noch wissen, in welcher Reihenfolge man Java installieren muss. Habe eclipse, JDK und JRE. Thx! Herzi

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