Neues Programm?

Status
Nicht offen für weitere Antworten.

mobile

Bekanntes Mitglied
Hallo,

ich bastel grade an einer neuen Idee für ein Programm. Ich möchte mit ihm meine Cd´s oder MD´s verwalten.
Zum Aufbau. Ich habe ein Hauptfenster, indem ich die Schaltfächen Beenden,Neuer Eintrag, MD Anzeigen und ein TextField MD Nr. habe.

Beenden ist klar.

Bei "NEuer Eintrag" möchte ich, dass sich ein neues Fenster öffnet (wie ich das mache is auch klar). In dem Fenster möchte ich die Titel und Interpreten in JTextFields eingeben.
Jetzt die erste Frage. Ich möchte, dass die Eingaben in dem Fenster unter einem Namen z.b 1 gespeichert werden.

Auf "MD Anzeigen" möchte ich nun, dass man in dem Hauptfenster in das TextField die MD eingibt die man anzeigen möchte. Bei klicken auf MD Anzeigen soll nun das Fenster mit den gespeicherten Daten geöffnet werde. Ist das machbar? Wenn ja wie könnte ich das Anstellem?

Mein erster Ansatz:

Das Fenster öffnen ist kein Problem, nur das Speichern und Anzeigen ist noch ein Problem.

Könnte ich nicht für jede Cd/MD ein neues Fenster mit den Daten speichern und dies dann aus dem Hauptfenster öffnen?
Nur wie kann ich dann die Nr der CD/MD aus dem TextField auslesen, sodass ich immer das Fenster bekomme was ich auch möchte?

Hoffe ihr habt das verstanden. 🙂

Vielen Dank für eure Hilfe!

MFG
timkon
 
Das ist ne gute Frage.

Hatte mir das so gedacht, dass man ein neues Fenster mit Button "Neu MD" öffnet und man dort die Daten eingibt. Diese Daten sollen dann in dem Fenster gespeichert werden. Das Fenster nennen wir jetzt mal 1. Allerdings müsste jedesmal ein neues Fenster automatisch erstellt werden.

Im Hauptfenster gebe ich dann ja im TextField 1 ein und klicke auf Anzeige. Jetzt sollen mir die Daten die ich vorher eingeben habe angezeigt werden.
 
Die Daten kannst du in einer Datenbank speichern und sie dann beim Anfordern wieder aus der DB rausholen...
 
Und wie mache ich das dann? Dann muss ich ja zusätzlich noch auf ne Datenbank zugreifen. Kompliziert.

Kann man das nicht so machen, dass die eingegebenen Daten gleich im Fenster gespeichert werde, so wie als wenn ich sie von Hand beim Pgrogrammieren eingeben würde?

Finde ich irgendwie besser.🙂
 
im Fenster? Daten speichert man auf ein Speichermedium nicht auf ein Fenster :bae:
Klar, kannst sie auch in ne Datei auf der Festplatte schreiben..
wünsche recht viel Spass bei einer grossen Menge an Einträgen, beim Sortieren nach gewissen Kriterien, beim Suchen, etc..
 
ihr versteht mich nicht glaub ich.:-(

Ich erstelle ein Fenster. In dem Fenster habe ich verschiedene JTextFields.

In jedes dieser JTextField wird z.b Name und Titel geschrieben.

In ein einziges Feld trägt man eine Nr ein. Übder diese Nr. will ich das Fenster aufrufen.

Nun will ich aber, dass die Daten die ich in die Fields geschrieben habe (Name/Tiel) beim klicken auf einen Button gespeichert werden.

Wenn ich nun das Fenster öffne, sollen diese Daten wieder da sein.

Kapisch! 🙂 Ist das so schwer? 🙂 Oder ist das gar nicht machbar? 🙂
 
timkon hat gesagt.:
...Wenn ich nun das Fenster öffne, sollen diese Daten wieder da sein...
Du darfst dein Programm dann aber nie beenden, sonst sind alle deine Fenster futsch.
Es sei denn du serialisierst sie. Aber davon würde ich abraten, weil es viel besser ist die Daten in Dateien
oder noch besser in eine DatenBank zu speichern.
 
Das bedeutet, ich muss alles in einer .txt speichern. Da ich über Acess nicht verfüge. Kann ich das nicht auch so machen, dass ich das als Tabelle speichern kann?

Also wenn ich auf Neu klicke öffnet sich ein Fenster indem eine vorgefertigte Tabelle ist. Und dann speicher ich das als .txt oder tabelle ab.

Wenn ich das Fenster wieder aufrufe öffnet sich dieses Dokument in dem Fenster. Geht das?

Kann ich nciht einfach in mein geöffnetes Fenster ein großes JTextArea machen und den darin eingebenen Text als .txt speicher? Schöner wäre natürölich in Tabelle.
 
>Kann ich das nicht auch so machen, dass ich das als Tabelle speichern kann?
Wenn du mit Tabelle eine JTable meinst, das ist natürlich auch nur temporär haltbar. JTable ist kein permanenter Datenträger.

>...dann speicher ich das als .txt ... ab
> Wenn ich das Fenster wieder aufrufe öffnet sich dieses Dokument in dem Fenster. Geht das?
Das geht. Aber natürlich nicht automatisch.

>Kann ich nciht einfach in mein geöffnetes Fenster ein großes JTextArea machen und den darin eingebenen Text als .txt speicher?
Das geht auch. Ist einfacher.
 
Yeah, cool.
Dann mach ich das so, also mit den TextArea. Ist zwar nicht ganz so schön von der optik und überisicht aber es geht. Habe grad schon eins erstellt.

Wie kann ich das denn jetzt als .txt abspeichern? Also per klick auf "Speichern" Habe das irgendwie in meim Buch nicht verstanden. Benötigt ihr den Code dazu? dann poste ich den mal.

Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


final public class CNeu extends JFrame
{
   //Behandlung für das Frame WindowLauscher
    final class CNeuFenster extends WindowAdapter
   {
       final public void windowClosing(WindowEvent e)
      {
         setVisible(false);
      }
   }
   
   //Behandlung für Button Speichern
   final class CSpeichern implements ActionListener
   {
        final public void actionPerformed(ActionEvent e)
      	{
           	
   		}
   		
	}
	
	//Behandlung den Button Schließen
   final class CSchließen implements ActionListener
   {
      final public void actionPerformed(ActionEvent e)
      {
       	setVisible(false);
      }
   }
  
      
   //Kontruktor legt Schalter und Label an
   CNeu(String titel)
   {
      super(titel);   //Fenstertitel
      
      //layout des Fensters
      getContentPane().setLayout(new BorderLayout());
            
      //Panel für Überschriften erzeugen
      JPanel oben = new JPanel();
      JLabel nr = new JLabel("MD");
      JLabel interpret = new JLabel("Interpret");
      JLabel song = new JLabel("Titel");
            
      oben.add(nr);
      oben.add(interpret);
      oben.add(song);
            
      nr.setForeground(Color.blue);
      interpret.setForeground(Color.blue);
      song.setForeground(Color.blue);
      
      //Panel für textArea erzeugen
      JPanel mitte = new JPanel();
      JTextArea text = new JTextArea();
      
      mitte.add(text);
      
      mitte.setSize(200,200);
      
      mitte.setBackground(Color.white);
                           
      //Panel für Buttons erzeugen
      JPanel button = new JPanel();
      JButton exit = new JButton ("Schließen");
      JButton save = new JButton ("Speichern");	
      
      button.add(exit);
      button.add(save);
      
      exit.setBackground(Color.white);
      save.setBackground(Color.white);
      
      //Panels zum Fenster zufügen
      getContentPane().add(oben,"North");
      getContentPane().add(mitte,"Center");
      getContentPane().add(button,"South");
      
      //Frame bei Listener anmelden
      addWindowListener(new CNeuFenster());
            
      //Listener für Buttons regisrieren
      save.addActionListener(new CSpeichern());
      exit.addActionListener(new CSchließen());
      
}
   }

Das ist jetzt der Code von dem Fenster. Denke man findet sich ganz gut zurecht oder?

Wo wir grad dabei sind. mit welchem Befehl kann ich denn die größe eines Buttons bestimmten setSize() funktionert irgendwie nicht.
 
lin hat gesagt.:
Daten speichert man auf ein Speichermedium nicht auf ein Fenster :bae:
Erzähl das mal meiner kleinen Nichte 😎

@timkon
Die Daten in einer Textdatei zu speichern ist einfach. Das Problem ist das wiedereinlesen.
Dazu müßtest du dir schon eine Struktur ausdenken, die leicht zu parsen ist. Anbieten würden
sich CSV(comma separated value)-Dateien in der pro Tabellenzeile eine Textzeile ist,
deren Spaltenelemente durch ein spezielles Zeichen (muß nicht Komma sein, # oder § tuns auch)
getrennt werden.

Dann wird das Einlesen relativ einfach.

Sauberer wäre allerdings eine xml-Datei. Nur ist das wieder zuviel Einarbeitung für dein Programm.
 
is ja alles Kompliziert.

Kann ich nicht eigentlich eine leere Tabelle erstellen, und diese Tabelle dann in dem Fenster in einem Panel öffnen lassen.

Dann könnte ich ja die Daten eingeben. Mir gehts da um die Übersicht. Dann könnte ich doch die Daten in der Tabelle speichern.

Beim öffnen, des Fensters wäre die gespeicherte Tabelle wieder da.

Also ich mein das so, dass man die Tabelle quasi als ein eigenständiges Dokument in dem Fenster läd und speichert. !?!

Das mit den CSV Datein habe ich irgendwie nicht verstanden. Wie soll das den Funktionieren? Aber hört sich schon ganu gut an.

Eine XML datei kann ich dann also auch in dem FEnster laden? Oder verstehe ich das falsch?
 
>...Das ist jetzt der Code von dem Fenster. Denke man findet sich ganz gut zurecht oder?
Es ist besser wenn du die JTextArea nicht so:
getContentPane().add(mitte,"Center");
sondern so einfügst:
getContentPane().add(new JScrollPane(text),"Center");

>...mit welchem Befehl kann ich denn die größe eines Buttons bestimmten
exit.setPreferredSize(new Dimension(100,25));

>Beim öffnen, des Fensters wäre die gespeicherte Tabelle wieder da.
JTable ist kein permanenter Datenträger. Geht nicht.

>Wie kann ich das denn jetzt als .txt abspeichern?
JTextArea hat eigene write/read Methoden.
 
Ich glaube, du hast noch grundsätzliche Verständnisschwierigkeiten.

Also Tabellen, Textfelder, ... in Programmiersprachen wie Java (C++, ...)
sind keine Excel-Tabellen die einfach gelesen und gespeichert werden können.

Das muß schon selbst programmiert werden. Es kann allerdings gut sein, daß es für
einfache JTables deren Zelleninhalte nur aus Strings bestehen schon irgendwelche
Klassen gibt, die dir das abnehmen. Aber frag mich nicht wo 🙁

Wenn du z.B. pro Musiktitel die Eigenschaften Titel, Interpreter, Länge, CD-Nr hast
sieht eine CSV-Datei so aus:

Titel 1§Interpret 1§3:12§17
Titel 22§Interpret 234§4:22§171
...


Pro Zeile steht ein Titel. Die Eigenschaften sind, in diesem Beispiel, durch § voneinander
getrennt. Einlesen und Speichern geht dann zwar einfach, es muß aber geproggt werden.

Eine entsprechende xml-Datei sieht so au

Code:
<musikListe>
  <musik>
    <titel>Titel 1</titel>
    <interpret>Interpret 1</interpret>
    ...
  </musik>
  ...
</musikListe>
Aber auch die muß per Programm geschrieben und gelesen werden. Hierfür gibt es zwar
fertige xml-Parser, aber ich schätze für deine Aufgabenstellung ist dies zu umfangreich.
 
Gut dann speicher ich das als text und lasse die dann immer wieder aufrufen. Weiß zwar noch nciht wie aber ihr seit ja da 🙂!

Aber mal was anderes. Es ist doch möglich verschiedene Fenster aufzurufen oder? Also wenn ich in mein TextField im Hauptfenster "1" schreibe, möchte ich ja Fenster 1 anzeigen. Wenn ich jetzt aber, 2 eingeben möchte ich 2 anzeigen. Das bedeutet ich kann doch mit einer switch Anweisung sagen, was das Programm tun soll, wenn in dem TextField 1,2,3,... steht oder?

Nur wie kann ich nochmal die Zahl aus dem Feld auslesen und weitergeben, sodass der Button "Anzeigen" dann auch die 1,2.. erhält und dem entsprechend das richtige Fenster aufruft?

Danke!

Ja das mit dem Verständnis mag wohl sein! Bin eben ein NewBie 🙂! Aller Anfang ist schwer, aber man wächst mit der herausforderung! 🙂 Schlauer Spruch was? 🙂
 
>Gut dann speicher ich das als text und lasse die dann immer wieder aufrufen. Weiß zwar noch nciht wie...
JTextArea hat eigene write/read Methoden.

>Es ist doch möglich verschiedene Fenster aufzurufen oder?
Ja.

>Also wenn ich in mein TextField im Hauptfenster "1" schreibe, möchte ich ja Fenster 1 anzeigen. Wenn ich jetzt
>aber, 2 eingeben möchte ich 2 anzeigen. Das bedeutet ich kann doch mit einer switch Anweisung sagen, was das
>Programm tun soll, wenn in dem TextField 1,2,3,... steht oder?
Ja.

>Nur wie kann ich nochmal die Zahl aus dem Feld auslesen
String wert = textfeld.getText();
int intWert = Integer.parseInt(wert);

>und weitergeben, sodass der Button "Anzeigen" dann auch die 1,2.. erhält und dem entsprechend das richtige
>Fenster aufruft?
Kann man mit Cardlayout machen.
 
Was ist den CardLayout? Noch nie gehört.

Ich muss jetzt leider weg.

Danke für eure Tipss, das mit dem TextArea anders zufügen ist ja geil 🙂.

Ok, hoffe ihr könnt mir weiterhin helfen,w enn ich morgen weiter mache. Also bis denne!
 
Warum zum Geier wird hier versucht das Rad neu zu erfinden? 😵

es gibt 1000 solcher Tools!

wenn ne übung sein soll, ok - anderenfalls OMG!
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben