In meinem TableModel für meine JTable werden Daten aus einer CSV-Datei gelesen. Je nach Datenmenge (Überschriften + items) wird die Tabelle aufgebaut.
Die Klasse MainFrame greift auf dieses Model zu.
Meine Frage lautet nun: Wie kann ich in meinem Konfigurationsmenü eine andere CSV-Datei laden und diese sofort im Frame darstellen. Das einlesen der Dateien und setzen als Standard funktioniert bereits, doch leider wird die neue Tabelle erst nach dem Neustart des Programms sichtbar.
Klasse MainFrame:
Die Klasse MainFrame greift auf dieses Model zu.
Meine Frage lautet nun: Wie kann ich in meinem Konfigurationsmenü eine andere CSV-Datei laden und diese sofort im Frame darstellen. Das einlesen der Dateien und setzen als Standard funktioniert bereits, doch leider wird die neue Tabelle erst nach dem Neustart des Programms sichtbar.
Klasse MainFrame:
Java:
public class FrameMain
{
private static final long serialVersionUID = 1L;
public static class MeinWindowListener extends WindowAdapter
{
public void windowClosing(WindowEvent arg0)
{
System.exit(0);
}
}
private static MenuBarMain menueLeiste = new MenuBarMain();
public static JLabel labelUeberschrift = null;
public static JTable tableZahlen = null;
public static MyTableModel tableModel = new MyTableModel();
public static JFrame mainFrame = new JFrame();
private static JComponent contentPane = (JComponent) mainFrame.getContentPane();
public static void newFrameMain()
{
mainFrame.setTitle("AMC TableTest");
mainFrame.setSize(420, 385);
mainFrame.setJMenuBar(menueLeiste.MenueLeiste());
initLayout();
mainFrame.setLocationRelativeTo(null); // Zentriert das Fenster
mainFrame.addWindowListener(new MeinWindowListener());
mainFrame.setVisible(true);
mainFrame.setResizable(true);
}
public static void initLayout()
{
contentPane.setLayout(new BorderLayout());
tableModel.readFile();
tableModel.writeHashMap();
tableModel.refresh();
// Das Tabellenmodell wird der JTable beim Erzeugen hinzugefügt
tableZahlen = new JTable(tableModel);
// Der Renderer wird der JTable hinzugefügt
tableZahlen.setDefaultRenderer(Object.class, new Renderer());
tableZahlen.setAutoCreateRowSorter(true);
// Der eigens erzeugte Keylistener wird der Tabelle hinzugefügt
KeyListener kl = new KeyListener();
kl.keyList(tableZahlen);
// Jede Spalte ist bei der Erstellung gleich breit
tableZahlen.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
// Die Tabelle wird in eine JScrollPane eingebettet
JScrollPane scrollPane = new JScrollPane(tableZahlen);
scrollPane.setPreferredSize(new Dimension(405, 300));
// Die Tabelle wird in ein Panel gesetzt
JPanel jpTable = new JPanel();
jpTable.add("Center", scrollPane);
contentPane.add("West", jpTable);
// Das Label "Überschrift", das in der Konfiguration verändert werden soll, wird hier erzeugt
labelUeberschrift = new JLabel("Überschrift");
JPanel jpLabel = new JPanel();
jpLabel.add(labelUeberschrift);
contentPane.add("North", jpLabel);
}
}