JPanel aktualisieren

Status
Nicht offen für weitere Antworten.

pope

Mitglied
Ich stehe etwas am Berg

Ich möchte in einer update()-Funktion eine JTable in mein GUI einfügen/aktualisieren
Dazu wird im moment einfach eine neue Tabelle gezeichnet

[highlight=Java]public void update() {
String[] titel = {"Frequenz", "Re(Z)", "Img(Z"};
String[][] datas = data.getMeasuresString();
table = new JTable(datas, titel);
frame.add(new JScrollPane(table));
}
[/highlight]
Ich möchte sie aber in ein Panel schreiben, das Panel also quasi updaten.
Gibt es da irgend eine geschickte Möglichkeit?
Am liebste wäre mir wenn ich die Tabelle komplett definieren könnte und einfach in der update Methode mit neuen Werten füllen, hab da aber nichts passendes gefunden

Was muss ich wo definieren und was muss ich wie updaten?
 
Zuletzt bearbeitet:

pope

Mitglied
Also so wie ich das verstanden habe, hilft mir das Model meine Tabelle nach einem bestimmten Muster zu füllen.
Wenn ich nun meine Tabelle einfach neu zeichnen möchte müsste das ja gehen - zwar noch keine saubere Lösung, ist aber nur zu Testzwecken.

Was stört ihn wenn ich in der update()-methode einfach new JTable und panel.add(table) mache?
 

pope

Mitglied
Ich habe mal den in Kapitel aufgeführten "einfachen Weg" etwas editiert.
Das sieht bei mir dann so aus:

data.getMeasuresString() gibt ein String[][] zurück

[highlight=Java]import javax.swing.table.AbstractTableModel;


class Model extends AbstractTableModel{

private String[][] datas;


public Model(DBController data){

datas = data.getMeasuresString();

}

// Die Anzahl Columns
public int getColumnCount() {
return datas[0].length;
}

// Die Anzahl Rows
public int getRowCount() {
return datas.length;
}

// Die Titel der einzelnen Columns
public String getColumnName(int column) {
return "String";

}

// Der Wert der Zelle (rowIndex, columnIndex)
public Object getValueAt(int rowIndex, int columnIndex) {

return datas[ rowIndex ][ columnIndex ];


}

// Eine Angabe, welchen Typ von Objekten in den Columns angezeigt werden soll
public Class getColumnClass(int columnIndex) {
return String.class;
}

// Jede Zelle ist editierbar
public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}

// Wird aufgerufen, falls der Wert einer Zelle verändert wurde
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {

datas[ rowIndex ][ columnIndex ] = aValue.toString();

}
}[/highlight]

Meine GUI.Java
[highlight=Java]
import java.awt.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.io.IOException;
import javax.swing.table.DefaultTableModel;

public class GUI {

public JTextArea input;
public JTable table;
public static DBController data = new DBController();
public JPanel panelWest;
public String[][] datas;
Model model = new Model(data);
JFrame frame = new JFrame("Datenbank");
String[] titel = {"Frequenz", "Re(Z)", "Img(Z"};
String[][] a = {{"a","b","c"},{"d","e","f"}};

public GUI() {

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new BorderLayout());

input = new JTextArea("....");
JButton open = new JButton("open file");
JPanel panelNorth = new JPanel();
JPanel panelWest = new JPanel();
table = new JTable( model );
table.setModel(new DefaultTableModel());
JScrollPane pane = new JScrollPane(table);
panelWest.add(pane);


JPanel panelCenter = new JPanel();
panelCenter.add(input);
panelCenter.add(open);

frame.add(panelNorth, BorderLayout.NORTH);
frame.add(panelWest, BorderLayout.WEST);
frame.add(panelCenter, BorderLayout.CENTER);


open.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// DBController data = new DBController();
try {
data.chooser();
} catch (FileNotFoundException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
input.setText(data.getParameters());
update();

}
});


frame.setSize(600, 500);
frame.setVisible(true);

}


//Diese Methode sollte die JTable table mit dem Inhalt data.getMeasuresString() füllen
public void update() {

table.setModel( model );


}
}
[/highlight]
das ganze gibt mir aber eine NullPointerException beim compilieren, obwohl das Model erst bei actionevent eines Buttons aufgeruft werden soll. :rtfm:

Kann es sein dass er ein Problem hat dass
[highlight=Java] Model model = new Model(data);[/highlight]

den NPE verursacht weil data.getMeasuresString(); noch leer ist?

Mir fehlt da Momentan etwas der Durchblick :(
 
Zuletzt bearbeitet:

Verjigorm

Top Contributor
Wenn du schon kein lauffähiges Programm postest, dann solltest du wenigstens den Stacktrace der Exception angeben
 
S

SlaterB

Gast
beim Kompilieren tritt nie eine NullPointerException auf ;)

beim Ausführen aber, dann sollte aber auch ein StackTrace dabei sein, der die genaue Zeilennummer angibt,
hast du den nicht?!

ich vermute, das Problem liegt bei
> table = new JTable( model );
> table.setModel(new DefaultTableModel());

also in der ersten Zeile davon, die zweite zitiere ich nur, weil es total komisch ist, der Tabelle erst ein Model zu geben und direkt danach ein anderes?!

bei der ersten Zeile wird die JTable jedenfalls beim Model getColumnCount() und getRowCount() usw abfragen,
wenn dann String[][] datas im Model null ist, siehts böse aus

-----

noch eine Anmerkung: wieso gibt es auch in der GUI-Klasse ein String[][] datas?
immer den Code sauber halten, Ordnung ist das halbe Leben

von String[] titel + String[][] a ganz zu schweigen
 

pope

Mitglied
Wie würde man das sauber lösen, die Tabelle zwar direkt initialisieren, von mir aus mit default werten füllen, und wenn dann die action performed aufgerufen wird erst mit den richtigen Daten füllen?
Ein ganzes Model nur um Daten einzulesen?
 
S

SlaterB

Gast
kommt darauf an, was dein Programm überhaupt machen soll, wie es in bestimmten Situationen wie reagieren soll,

WAS dein Programm macht weiß ich nicht, erzählst du nicht,
Sätze wie 'Ein ganzes Model nur um Daten einzulesen?' scheinen mir mit dem Thema wenig zielführend verknüpft,

wenn ich mich an meinen vorherigen Gedanken orientiere, dann haben wir da ein Model ohne Daten, welches auf eine JTable losgelassen wird,
das ist nicht ganz abwegig, falls erst später die Daten dazukommen,

dann muss man nur noch dafür sorgen, dass es in der Anfangsituation nicht zu einer Exception kommt,
ist doch möglich:

public int getRowCount() {
return datas.length;
}
führt zu einer Exception, wenn datas null ist,

public int getRowCount() {
if (datas == null) {
return 0;
}
return datas.length;
}
macht dagegen keinen Ärger, Problem gelöst?
so könnte man alle Methoden reparieren,

Voraussetzung wäre allerdings, dass man NullPointerExceptions erkennen und interpretieren kann,
z.B. sich den StackTrace anschaut und so die genaue Zeile des Fehlers findet
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L GUI - Jpanel - Splitpane will nicht aktualisieren AWT, Swing, JavaFX & SWT 4
Y Swing Aktualisieren eines JPanel mit ArrayList im TableLayout AWT, Swing, JavaFX & SWT 2
M Wie, ein JTable / JPanel / JContentPane aktualisieren? AWT, Swing, JavaFX & SWT 3
W JPanel mit Labeln aktualisieren AWT, Swing, JavaFX & SWT 7
B JPanel aktualisieren mit validate() ! AWT, Swing, JavaFX & SWT 8
M JPanel aktualisieren AWT, Swing, JavaFX & SWT 3
P Zwei JPanel übereianderlegen AWT, Swing, JavaFX & SWT 14
XWing Basic JPanel mit 2 Buttons beutzen. AWT, Swing, JavaFX & SWT 10
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
N AWT JPanel zu Jframe hinzufügen AWT, Swing, JavaFX & SWT 2
M clear JPanel before repainting AWT, Swing, JavaFX & SWT 1
B ImageIcon auf JPanel austauschen AWT, Swing, JavaFX & SWT 3
T Swing Reload JPanel + darin liegende ProgressBar AWT, Swing, JavaFX & SWT 9
P Swing Mehrere JLabels mit ImageIcon in JPanel lesen AWT, Swing, JavaFX & SWT 1
E JScrollPane mit JPanel verbinden AWT, Swing, JavaFX & SWT 1
F JPanel Celleditor AWT, Swing, JavaFX & SWT 8
B JPanel-Inhalte inkl. JTextarea zoomen? AWT, Swing, JavaFX & SWT 3
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
CptK Funktionsgraphen effizient zeichnen und nur Teile von JPanel erneuern AWT, Swing, JavaFX & SWT 2
P Button simpler random auf einem JPanel verteilen? AWT, Swing, JavaFX & SWT 3
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
Ich lerne Java. Swing Von JPanel A auf JPanel B zugreifen. AWT, Swing, JavaFX & SWT 4
A JPanel austauschen und Focus geben AWT, Swing, JavaFX & SWT 3
E Auf JPanel malen und davor JComponenten anzeigen AWT, Swing, JavaFX & SWT 12
L JComponent aus JPanel anhand Mausposition ermitteln AWT, Swing, JavaFX & SWT 10
J JPanel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
B Verschiebbares JPanel "ruckelt" im Randbereich AWT, Swing, JavaFX & SWT 2
S Swing JPanel nimmt keinen KeyListener an AWT, Swing, JavaFX & SWT 7
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
Hatsi09 Swing JPanel Bild einfügen AWT, Swing, JavaFX & SWT 14
L JPanel zeigt keinen Inhalt AWT, Swing, JavaFX & SWT 1
dereki2000 JPanel mit Rückgbe wie bei JOptionPane AWT, Swing, JavaFX & SWT 3
E Hintergrundfarbe setzen in JPanel funktioneirt nicht AWT, Swing, JavaFX & SWT 4
P JPanel KeyListener hinzufügen AWT, Swing, JavaFX & SWT 8
S Nach scrollen verschwindet das zuvor im JPanel gezeichnete AWT, Swing, JavaFX & SWT 2
P Bewegung eines Balkens in eineum JPanel welches als Spielfeld fungiert AWT, Swing, JavaFX & SWT 2
L Swing JPanel Größe anpassen AWT, Swing, JavaFX & SWT 6
D Platzierung von JTextfield in JPanel AWT, Swing, JavaFX & SWT 3
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
M Swing JPanel in JScrollPane AWT, Swing, JavaFX & SWT 3
M Zwei JPanel übereinander nur vorderes "repainten" AWT, Swing, JavaFX & SWT 3
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
J Ziehen eines Buttons im JPanel AWT, Swing, JavaFX & SWT 2
J Button lässt sich nicht auf dem JPanel verschieben AWT, Swing, JavaFX & SWT 5
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
DaCrazyJavaExpert Swing JPanel "ContentPane" wird nicht gesetzt/angezeigt AWT, Swing, JavaFX & SWT 16
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing JPanel wird in JScollPane nicht angezeigt AWT, Swing, JavaFX & SWT 2
it_is_all JPanel verschwindet nach Button-Klick AWT, Swing, JavaFX & SWT 2
B Bar Plot in Swing JPanel AWT, Swing, JavaFX & SWT 0
F Screenshot eines JPanel AWT, Swing, JavaFX & SWT 3
S JPanel rotieren, Bild ist abgeschnitten, Clipping? AWT, Swing, JavaFX & SWT 0
M Swing JPanel flüssig verschieben AWT, Swing, JavaFX & SWT 5
G Nur ein JPanel wird angezeigt AWT, Swing, JavaFX & SWT 9
kilopack15 JPanel im laufenden Zustand einfärben AWT, Swing, JavaFX & SWT 2
kilopack15 JPanel Farbverwaltung AWT, Swing, JavaFX & SWT 1
A JScrollPane soll JPanel mit JButtons enthalten und eine Scollbar anzeigen AWT, Swing, JavaFX & SWT 1
A Swing JLabels in einer ForEach Schleife an den JPanel anheften (UNO Netzwerkspiel) AWT, Swing, JavaFX & SWT 1
L JPanel zeichnet im Konstrukter erzeugten Hintergrund nicht AWT, Swing, JavaFX & SWT 10
Java_RY wie kann ich auf JButtons in einem JPanel zugreifen AWT, Swing, JavaFX & SWT 3
F Zeichnung einem JPanel im Layoutmanager zuweisen AWT, Swing, JavaFX & SWT 3
Meeresgott Swing Umgang mit JPanel AWT, Swing, JavaFX & SWT 4
R 2D-Grafik PNG Bild per Graphics auf JPanel AWT, Swing, JavaFX & SWT 9
K JPanel Bilder bei Windows nicht darstellbar AWT, Swing, JavaFX & SWT 6
W Swing JPanel nur einmal nach mehreren Änderungen neu zeichnen AWT, Swing, JavaFX & SWT 1
J Swing Zeichenfläche im JPanel des Haupfenster anzeigen lassen AWT, Swing, JavaFX & SWT 4
A Swing JPanel zeigt Buttons nicht an AWT, Swing, JavaFX & SWT 4
R JPanel überzeichnet alles? AWT, Swing, JavaFX & SWT 1
D Von JPanel auf anderes JPanel zugreifen AWT, Swing, JavaFX & SWT 9
L Swing Teile eines JPanel in eigene Klasse auslagern AWT, Swing, JavaFX & SWT 3
I JPanel - Verwaltung/ Anordnung AWT, Swing, JavaFX & SWT 4
T JComponents zur Laufzeit auf JPanel darstellen AWT, Swing, JavaFX & SWT 10
F Java Swing Rechteck in JPanel zeichnen AWT, Swing, JavaFX & SWT 7
J Linien auf JPanel zeichnen AWT, Swing, JavaFX & SWT 3
L ImageIcon auf JPanel wird nicht angezeigt(keiner Fehlermeldung) AWT, Swing, JavaFX & SWT 11
M Swing JPanel innerhalb eines Frames verschieben AWT, Swing, JavaFX & SWT 3
T JTextField Array im JPanel wird nicht komplett angezeigt AWT, Swing, JavaFX & SWT 7
K Swing JPanel ueber komplette Form legen AWT, Swing, JavaFX & SWT 1
W Swing Größenänderung vom JPanel im JScrollPane und anschließendes positionieren AWT, Swing, JavaFX & SWT 2
R Komponenten von JPanel bleiben unsichtbar AWT, Swing, JavaFX & SWT 2
O JTabeddpane aber jedes JPanel als eigene Klasse anlegen AWT, Swing, JavaFX & SWT 7
llabusch Linien in JPanel zeichnen AWT, Swing, JavaFX & SWT 6
I (JPanel) paintComponent mit Zeitverschiebung (Sleep/Wait) AWT, Swing, JavaFX & SWT 1
H Netbeans Designer: Probleme mit JPanel und JFrame AWT, Swing, JavaFX & SWT 2
S jpanel anchor bottom AWT, Swing, JavaFX & SWT 1
thobren Swing Im JPanel wird nur TextArea gelöscht AWT, Swing, JavaFX & SWT 13
A JPanel größe verändern AWT, Swing, JavaFX & SWT 4
G JPanel komponente Löschen AWT, Swing, JavaFX & SWT 7
F JPanel "verschmelzen" GridLayout AWT, Swing, JavaFX & SWT 10
B Dropdown "Einstellungen" auf JPanel, transparent AWT, Swing, JavaFX & SWT 1
D GlassPane für JPanel AWT, Swing, JavaFX & SWT 2
F JPanel "zeichnet" keinen Text AWT, Swing, JavaFX & SWT 14
T Swing Index für Komponente in JPanel? AWT, Swing, JavaFX & SWT 6
Z Probleme mit JPanel's AWT, Swing, JavaFX & SWT 6
T Probleme mit Anzeige von Elementen im JPanel AWT, Swing, JavaFX & SWT 1
R JScrollPane überdeckt JPanel? AWT, Swing, JavaFX & SWT 7
O 2D-Grafik Zeichenfläche auf JPanel AWT, Swing, JavaFX & SWT 4
H JTree in JScrollPane passt sich nicht an Größe von JPanel an AWT, Swing, JavaFX & SWT 2
H Position eines JLabel in einem JPanel AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben