Hi,
Ich habe soeben erfolgreich meine JTable meinem Fenster hinzugefügt. Das ganze habe ich mithilfe eines Beispiels umgesetzt. Allerdings wird dort das BorderLayout verwendet, jedoch möchte ich das Nulllayout verwenden.
Das Problem ist nun, sobald ich das Nulllayout einstelle, meine JTable plötzlich nicht mehr im Fenster angezeigt wird (Location habe ich gesetzt!). Ich weiß nicht wo der Fehler liegt…
Ich poste hier am besten mal beide Varianten, einmal die funktionierende und einmal die nicht funktionierende (ist nur die View des Programms, also ohne main()).
Unterschieden tuen sich die beiden Varianten nur darin, dass ich in der einen eben den LayoutManager des Frame und Panel nicht explizit auf null setze.
Die nicht funktionierende Variante mit dem Nulllayout:
package View;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import Controller.Controller;
public class ViewHauptprogramm extends View {
private JFrame frameHauptprogramm;
private JPanel panelHauptprogramm;
private JTable table;
private DefaultTableModel model;
public ViewHauptprogramm(Controller controller) {
this.controller = controller;
frameHauptprogramm = new JFrame("FTP-Programm");
frameHauptprogramm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frameHauptprogramm.setSize(800, 800);
frameHauptprogramm.setLocationRelativeTo(null);
panelHauptprogramm = new JPanel();
frameHauptprogramm.add(panelHauptprogramm);
frameHauptprogramm.setLayout(null);
panelHauptprogramm.setLayout(null);
String[] titles = new String[]{ "Dateiname", "Dateigroeße", "Downloads", "Uploader" };
model = new DefaultTableModel(titles, 0);
table = new JTable(model);
table.setBounds(10, 10, 500, 500);
panelHauptprogramm.add(new JScrollPane(table));
table.setVisible(true);
frameHauptprogramm.setVisible(true);
}
}
Die funktionierende Variante mit dem BorderLayout (Standart-Layout, habs nirgends explizit gesetzt):
package View;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import Controller.Controller;
public class ViewHauptprogramm extends View {
private JFrame frameHauptprogramm;
private JPanel panelHauptprogramm;
private JTable table;
private DefaultTableModel model;
public ViewHauptprogramm(Controller controller) {
this.controller = controller;
frameHauptprogramm = new JFrame("FTP-Programm");
frameHauptprogramm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frameHauptprogramm.setSize(800, 800);
frameHauptprogramm.setLocationRelativeTo(null);
panelHauptprogramm = new JPanel();
frameHauptprogramm.add(panelHauptprogramm);
//frameHauptprogramm.setLayout(null); Auskommentiert!
//panelHauptprogramm.setLayout(null); Auskommentiert!
String[] titles = new String[]{ "Dateiname", "Dateigroeße", "Downloads", "Uploader" };
model = new DefaultTableModel(titles, 0);
table = new JTable(model);
table.setBounds(10, 10, 500, 500);
panelHauptprogramm.add(new JScrollPane(table));
table.setVisible(true);
frameHauptprogramm.setVisible(true);
}
}