Neue Klasse für TableView?

Lucaaa

Bekanntes Mitglied
Hallo!
Ich habe in meinem Programm eine MainUI Klasse. Wie der Name schon sagt, enthält diese Klasse die UI meines Programms. Jetzt habe ich noch eine TableView, die zur Definierung der Spalten (usw.) relativ viel Code benötigt.
Meine Frage ist nun, ob ich das in eine extra Klasse auslagern soll (die mit TableView erweitert wird), oder sollte ich es alles in einer Klasse machen?
 

mrBrown

Super-Moderator
Mitarbeiter
Ich glaube das warst sogar du.
Es ging darum, dass für jedes meiner Panels eine eigene Klasse gemacht habe
Die allgemeingültige Regel ist halt: "Es kommt drauf an". Das was in dem einen Kontext richtig war, kann im nächsten völlig falsch sein :p

Eine eigene Klasse für eine Tabelle klingt es aber sinnvoll, das ist viel Code, der zusammen gehört, aber mit dem Rest nur lose gekoppelt sein sollte.
 

mihe7

Top Contributor
Es ging darum, dass für jedes meiner Panels eine eigene Klasse gemacht habe
Es ging wahrscheinlich darum, dass Du jedesmal von einem Container (ich meine, es wäre JPanel gewesen) abgeleitet hast, anstatt diesen einfach zu verwenden. Das ist etwas völlig anderes.

Sagen wir mal, Du brauchst eine Liste mit ... Namen von Automarken. Dann gehst Du doch nicht her und machst:
Code:
public class Automarken extends ArrayList<String> {
     public Automarken() {
         add("Marke1");
         add("Marke2");
         add("Marke3"); 
         ...
    }
}

Bei Komponenten schalten aber alle erstmal um auf den "extends-Mode" (das "ö" im Klassennamen ist Absicht - der Umlaut-Mode ist auch an):
Code:
public class MeinSchönesPanel extends JPanel {
    public MeinSchönesPanel() {
        add(new JLabel("Label:" ));
        add(new JButton("Button"));
        add(new JTextField());
        ...
    }
}

Du siehst die Analogie?
 

Lucaaa

Bekanntes Mitglied
"Es kommt drauf an".
Also wenn ich alles richtig gelesen und verstanden habe gillt folgendes:
Wenn du viel Code für ein Element brauchst, das mit dem Rest des Programms nicht so viel zu tun hat, mache eine eigene Klasse (Beispiel meine Tabelle, die ist nur zur Visualisierung von ausgewählten Dateien, das Programm kommt auch ohne Zugriff auf diese zurecht (fast)

Ansonsten: Lass es!
 

Lucaaa

Bekanntes Mitglied
Aber das bedeutet dann auch, dass ich das hier nicht machen sollte
Java:
package com.ludevstudio.filecrypter.core;
import java.io.File;
import java.util.ArrayList;
public class FileManager {
 private ArrayList<File> files;
 
 public FileManager() {
  if(files == null) {
   files =new ArrayList<File>();
  }
 }
 
 // get all files
 public ArrayList<File> getFiles() {
  return files;
 }
 
 // add a file
 public void addFile(File file) {
  files.add(file);
 }
 
 // remove a file based on object id
 public void removeFile(File file) {
  files.remove(file);
 }
 
 // remove a file based on index
  public void removeFile(int index) {
   files.remove(index);
  }
  
  
  
  
}

ich brauche die ArrayList im ganzen Programm...
 

mihe7

Top Contributor
Auf keinen Fall.

Durch das "extends" wird aus Automarken ein Subtyp einer ArrayList, d. h. es wird erklärt, dass gilt: Automarken ist-eine ArrayList. Das ist Unfug.

Zum Beispiel ist folgendes möglich:
Java:
public Automarken getMarken() { ... }

// und irgendwo, an ganz anderer Stelle:
List<String> marken = irgendeinObjekt.getMarken();
Wo ist bei "marken" der Automarken-Typ hin? Futsch. Für den Computer ist das kein Problem, denn das Objekt, das getMarken() zurück liefert, ist eine ArrayList, wie durch "class Automarken extends ArrayList<String>" erklärt wurde.

Dein FileManager dagegen nutzt intern "zufällig" eine ArrayList. Das muss nach außen nicht bekannt sein. Er könnte auch eine LinkedList, eine Datenbank oder sonst was verwenden. Insofern kann auch das List-ähnliche Interface sinnvoll sein.

Noch zwei Nebenbemerkungen zu Deinem FileManager: die null-Prüfung im Konstruktor ist überflüssig (files ist an der Stelle null) und die interne Liste sollte nicht einfach so nach außen gegeben werden, damit ist die Kapselung nämlich futsch.
 

mrBrown

Super-Moderator
Mitarbeiter
Code:
public class Automarken extends ArrayList<String> {
     public Automarken() {
         add("Marke1");
         add("Marke2");
         add("Marke3");
         ...
    }
}

Java:
package com.ludevstudio.filecrypter.core;
import java.io.File;
import java.util.ArrayList;
public class FileManager {
 private ArrayList<File> files;
 
 public FileManager() {
  if(files == null) {
   files =new ArrayList<File>();
  }
 }
 //irrelevanten code entfernt... 
 
}

Wo siehst du da denn Gemeinsamkeiten?

Der wesentliche Punkt ist das extends ArrayList, welches keinen Sinn hat, aber trotzdem von jedem bei GUI-Componenten genauso gemacht wird
 

Lucaaa

Bekanntes Mitglied
aber trotzdem von jedem
Na immerhin etwas. Ich bin nicht der einzige!

Stelle null) und die interne Liste sollte nicht einfach so nach außen gegeben werden, damit ist die Kapselung nämlich futsch.
Ja das mit der null Abfrage ist Mist. Da hatte ich einen gravierenden Denkfehler.
Das wirft dann die Frage auf: Wie kriege ich den FileManager in eine zweite Klasse? Muss ich den Dann übergeben? wie ich möchte auf die Arraylist files zugreifen.

Und das mit der getFiles(): was wäre die bessere Lösung?
 

mihe7

Top Contributor
Wie kriege ich den FileManager in eine zweite Klasse? Muss ich den Dann übergeben?
Klar, ein FileManager-Objekt. Wenn Du nur eines brauchst, dann erstellst Du einfach nur eines und gibst das dann den betreffenden anderen Objekten mit.

ich möchte auf die Arraylist files zugreifen.
Möchtest Du jetzt auf den FileManager oder auf eine Liste zugreifen?

Und das mit der getFiles(): was wäre die bessere Lösung?
Zum Beispiel: return Collections.unmodifiableList(files);
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Hijo2006 Neue externe Klasse einbinden Java Basics - Anfänger-Themen 13
M Klassen Eine Klasse abrufen ohne eine neue Instanze auf zu rufen? Java Basics - Anfänger-Themen 8
F Variablen Übergabe von eingelesenen Variablen in neue Klasse Java Basics - Anfänger-Themen 15
K in Konstruktor neue Objekte einer anderen Klasse erzeugen Java Basics - Anfänger-Themen 9
F Neue Klasse mag nicht - nullPointerException Java Basics - Anfänger-Themen 6
Haubitze_Broese neue Klasse? Java Basics - Anfänger-Themen 6
B Eine neue Klasse in anderen Projekten nutzen Java Basics - Anfänger-Themen 5
M Action als neue Klasse Java Basics - Anfänger-Themen 2
D Wie neue Instanz einer Klasse erstellen, von der ich nur eine andere Instanz kenne? Java Basics - Anfänger-Themen 13
S Stilfrage: Neue Klasse wenn es in einer Klasse zu viele Methoden gibt? Java Basics - Anfänger-Themen 14
GambaJo Ab wann neue Klasse erzeugen? Java Basics - Anfänger-Themen 2
U Werte in neue Klasse speichern Java Basics - Anfänger-Themen 23
G Methode zum Erzeugen von neue Klasse ? Java Basics - Anfänger-Themen 12
P Neue Java v8 JRE Version nicht über alte drüber installierbar: Wie sonst? Java Basics - Anfänger-Themen 7
F Erste Schritte Zahlenreihe von Arraylist in 3erBlöcke sortiert in neue Arraylist Java Basics - Anfänger-Themen 2
B Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun Java Basics - Anfänger-Themen 9
S JavaFX - Objekt an neue Stage übergeben Java Basics - Anfänger-Themen 12
C Nachträglich neue grafische Objekte hinzufügen Java Basics - Anfänger-Themen 7
A eine neue normale String-Array von einer String-Array, die in for schleife ist, schaffen Java Basics - Anfänger-Themen 3
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
J Neue Werte in ein Array hinzugeben Java Basics - Anfänger-Themen 8
V Neue Ausgabe von toString nach Methodenaufruf Java Basics - Anfänger-Themen 9
B Objekt an neue Stage übergeben? Java Basics - Anfänger-Themen 9
tsom Erste Schritte itext Text als Block auf neue Seite Java Basics - Anfänger-Themen 0
T Zufällige Matrix in neue Matrix schreiben Java Basics - Anfänger-Themen 6
M BufferedReader neue Zeile nach Knopfdruck Java Basics - Anfänger-Themen 9
S drawString() neue Zeile Java Basics - Anfänger-Themen 4
H Aus wav-datei lesen und in neue wav-datei speichern Java Basics - Anfänger-Themen 10
E Wenn i (for-Loop) bestimmter Wert, dann neue Zeile eines Buttons Java Basics - Anfänger-Themen 7
W Neue Klassenmethode implementieren.. Java Basics - Anfänger-Themen 6
U neue Methoden in JSP??? Java Basics - Anfänger-Themen 1
L0MiN Erste Schritte Neue Punkte zu einer Map hinzufügen und dauerhaft speichern? Java Basics - Anfänger-Themen 4
N wie schreibt man die neue for schleife? Java Basics - Anfänger-Themen 3
D Wie erstelle ich eine neue Hauptklasse mit eclipse? Java Basics - Anfänger-Themen 3
D neue public static class variablen in array speichern? Java Basics - Anfänger-Themen 6
B Neue Bibliothek hinzufügen Java Basics - Anfänger-Themen 2
S Daten aus anderen Dateien in neue Datei einlesen Java Basics - Anfänger-Themen 3
M FileWriter Neue Datei wenn aktuelle "zu groß" Java Basics - Anfänger-Themen 3
C auslesen bestimmter werte einer textdatei und anschl. hineinschreiben in eine neue txt-datei. Java Basics - Anfänger-Themen 2
R csv-Datei auslesen und ausgelesene Daten in neue csv-Datei speichern Java Basics - Anfänger-Themen 2
D Neue Array übernimmt Werte des alten nicht Java Basics - Anfänger-Themen 5
J Neue Zeile an bestimmter Stelle in Textdatei einfügen Java Basics - Anfänger-Themen 2
M Neue Objekte mit Hilfe von String Variable erschaffen Java Basics - Anfänger-Themen 2
I Neue Klassenbibliothek erstellen Java Basics - Anfänger-Themen 8
K Iteration - Alte und neue For Schleife Java Basics - Anfänger-Themen 17
C Vector erzeugt neue Indizes nach Input Java Basics - Anfänger-Themen 2
S neue Methode schreiben Java Basics - Anfänger-Themen 14
E Variable neue Random Zahl zuweisen, wenn Button geklickt Java Basics - Anfänger-Themen 5
J Werte ins neue Fenster übertragen Java Basics - Anfänger-Themen 6
G Ausgabe nach 5 Zeichen in neue Zeile schreiben??? Java Basics - Anfänger-Themen 12
A Werte per Zufall aus einer Datei ziehen und in eine neue Datei schreiben Java Basics - Anfänger-Themen 9
U neue Java-Datei öffnen Java Basics - Anfänger-Themen 10
S Itext und eine neue Zeile einfügen Java Basics - Anfänger-Themen 2
Corben Input/Output FileOutputStream - neue Zeile mit write(10) Java Basics - Anfänger-Themen 6
S Datenströne - Text in eine Datei einlesen, umwandeln und in eine neue Datei schreiben Java Basics - Anfänger-Themen 6
L String suchen und ersetzten, ohne neue Datei Java Basics - Anfänger-Themen 4
X FileHandler: neue Datei erzeugen Java Basics - Anfänger-Themen 2
U Java neue Variable für jeden Schleifendurchgang Java Basics - Anfänger-Themen 11
K Neue Menge aus zwei Mengen konstruieren Java Basics - Anfänger-Themen 3
Luk10 Dateipfad beim Laden einer Datei + Neue kleine Frage! Java Basics - Anfänger-Themen 11
Hindi93 Neue Libs - wohin damit? Java Basics - Anfänger-Themen 7
G JUnit ist das neue main() Java Basics - Anfänger-Themen 16
M neue Zufallszahl in Schleife Java Basics - Anfänger-Themen 2
M java neue datei erstellen Java Basics - Anfänger-Themen 6
V Scanner Einlese aus Datei in neue Datei? Java Basics - Anfänger-Themen 8
F Neue Panelgröße nach Fenster maximieren Java Basics - Anfänger-Themen 5
S FileWriter - in neue Zeile schreiben!? Java Basics - Anfänger-Themen 19
P OOP Automatisch neue Objekte erstellen Java Basics - Anfänger-Themen 14
L Neue Zeile JTable Java Basics - Anfänger-Themen 13
W neue Variablen in Schleife anlegen Java Basics - Anfänger-Themen 13
S GridBagLayout neue Objekte hinzufügen Java Basics - Anfänger-Themen 3
B Teile einer Image in neue Image kopieren Java Basics - Anfänger-Themen 4
E Neue zeile in string Java Basics - Anfänger-Themen 3
L Mit Array neue Objekte erzeugen Java Basics - Anfänger-Themen 3
R Zeichnung entfernen und neue Zeichnen lassen Java Basics - Anfänger-Themen 20
R Neue GUI öffnen und die Alte schließen Java Basics - Anfänger-Themen 6
J ArrayList<Point> in eine neue ArrayList<Point> kopieren Java Basics - Anfänger-Themen 8
G neue Instanz von ArrayList Java Basics - Anfänger-Themen 5
Zed Übergang von Kalenderwochen ins neue Jahr Java Basics - Anfänger-Themen 19
W JTextfield in neue Zeile einfügen Java Basics - Anfänger-Themen 5
JFeel-x Kann man in Eclipse neue Shortcuts erstellen? Java Basics - Anfänger-Themen 17
S Auf neue Dateien überprüfen Java Basics - Anfänger-Themen 2
Q java.util.loggging neue datei erstellen Java Basics - Anfänger-Themen 3
M Neue Pakete implementieren Java Basics - Anfänger-Themen 5
D neue Datei inkl. Ordner erstellen - in einem Rutsch? Java Basics - Anfänger-Themen 7
H ist eine "neue Session" für Mail möglich? Java Basics - Anfänger-Themen 3
G FileWriter -> neue Zeile Java Basics - Anfänger-Themen 13
S PrepareStatement, jede neue Zeile INT-Wert Java Basics - Anfänger-Themen 5
K Eine Neue Methode Schreiben . Java Basics - Anfänger-Themen 15
L ftp öffnen über neue DOS-Box Java Basics - Anfänger-Themen 8
A Neue Objekte zur Laufzeit erzeugen Java Basics - Anfänger-Themen 5
M Neue Zeile? Java Basics - Anfänger-Themen 8
M JTable - DefaultTableModel - neue Row per Button-Klick Java Basics - Anfänger-Themen 2
S neue Aufgabe Java Basics - Anfänger-Themen 4
M Mit Java eine neue DB anlegen über XAMPP? Ist das möglich ? Java Basics - Anfänger-Themen 4
G Neue Look and Feels Java Basics - Anfänger-Themen 6
K Neue Werte für gleiche Array-Indexe Java Basics - Anfänger-Themen 16
Bernasconi Programmierstil / Wann eine neue Datei? Java Basics - Anfänger-Themen 5
S Datei auslesen und neue schreiben (keine Textdatei) Java Basics - Anfänger-Themen 2
U Neue Zeile im JLabel Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben