Mehrere JTables in einem Fenster

assix

Mitglied
Hallo,

ich arbeite mich gerade in die GUI-Erstellung ein und stehe vor einem kleinen Problem.
Ich möchte mehrere JTables in einem Fenster Unterbringen.

Der Code sieht folgendermaßen aus:

Java:
showBookingOverview = new JFrame(appName);
showBookingOverview.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
showBookingOverview.setSize(standardWidth, standardHeight);
showBookingOverview.setLocation(standardXLocation, standardYLocation);
showBookingOverview.setVisible(true);


Container container = showBookingOverview.getContentPane();
container.setLayout(null);

		
JTable outboundTable = booking.showOutboundFlight();
JTable returnTable = booking.showReturnFlight();
JTable bookedLuggage = booking.returnLuggage();


JScrollPane outboundPane = new JScrollPane(outboundTable);
JScrollPane returnPane = new JScrollPane(returnTable);
JScrollPane luggagePane = new JScrollPane (bookedLuggage);

outboundPane.setBounds(50, 80, 580, 150);
returnPane.setBounds(50, 190, 580, 150);
luggagePane.setBounds(50, 260, 100, 200);


container.add(outboundPane);
container.add(returnPane);
container.add(luggagePane);

Das Ergebnis sieht leider nicht ganz so toll aus:


pic.jpg



Woran kann das liegen? Was hab ich außer aucht gelassen?

Schon mal danke für eure Hilfe.

Beste Grüße

assix
 
Mach "setVisible" zum Schluss und versuch Layoutmanager zu benutzen. Beispiel:
Java:
showBookingOverview = new JFrame(appName);
showBookingOverview.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
showBookingOverview.setSize(standardWidth, standardHeight);
showBookingOverview.setLocation(standardXLocation, standardYLocation);

JPanel content = new JPanel(new BorderLayout());
content.setBorder(BorderFactory.createEmptyBorder(80, 50, 0, 50));
showBookingOverview.setContentPane(content);
JPanel panel1 = new JPanel(new GridLayout(0, 1));
JPanel panel2 = new JPanel();
panel2.setLayout(new BoxLayout(panel2, BoxLayout.X_AXIS));
panel2.setOpaque(false);

JTable outboundTable = booking.showOutboundFlight();
JTable returnTable = booking.showReturnFlight();
JTable bookedLuggage = booking.returnLuggage();
JScrollPane outboundPane = new JScrollPane(outboundTable);
JScrollPane returnPane = new JScrollPane(returnTable);
JScrollPane luggagePane = new JScrollPane(bookedLuggage);

luggagePane.setPreferredSize(new Dimension(100, 100));
luggagePane.setMaximumSize(luggagePane.getPreferredSize());
panel2.add(luggagePane);
panel2.add(Box.createHorizontalGlue());
JButton btCancel = new JButton("Buchung abbrechen");
panel2.add(btCancel);

content.add(panel1, BorderLayout.CENTER);
panel1.add(outboundPane);
panel1.add(returnPane);
panel1.add(panel2);
showBookingOverview.setVisible(true);
 
Danke für dein Tips.

Lag aber daran dass die einzelnen Tables zu groß waren und sich gegenseitig überdeckt haben.
Mein Fehler...hat auch lange gedauert bis ich drauf gekommen bin. :shock:

Trotzdem Danke

Beste Grüße

assix
 
setVisible wird schon ausgeführt. hab ich nur nicht mehr hier reingeschrieben.
Sonst würd ich den Frame erst gar nicht sehen.

Und am LayoutManager lags auch nicht.

Beste Grüße

Assix
 
setVisible wird schon ausgeführt. hab ich nur nicht mehr hier reingeschrieben.
Sonst würd ich den Frame erst gar nicht sehen.

Und am LayoutManager lags auch nicht.
Liest Du auch was die Leute Dir antworten?

Die Aussage war Du sollst setVisible erst zum Schluss aufrufen, wenn alle Komponenten im Frame eingefügt sind.

und

Du sollst einen LayoutManager verwenden, dann kann Dir sowas wie "aus Versehen sich überlagernde Komponenten" nicht passieren.
 
klar les ich das.
wie gesagt das setVisible wird am Schluss ausgeführt.

Und das LayoutManager überlagern verhinden konnte ich ja nicht wisse. Steht dort auch nicht 😉

Naja....wie gesagt das Problem hat sich erledigt. :toll:

Beste Grüße

Assix
 
Und das LayoutManager überlagern verhindern konnte ich ja nicht wisse. Steht dort auch nicht 😉
Naja....wie gesagt das Problem hat sich erledigt. :toll:

Die Empfehlung, Layoutmanager zu benutzen gilt generell, weshalb ich nicht auf irgendein besonderes Problem mit Null Layout eingegangen bin.

Auch unter veränderten Bedingungen, wie Änderung der Bildschirmauflösung oder Fenstergröße, können Layoutmanager die Disposition in Ordnung halten. Deshalb ist Null Layout stets zu vermeiden.

Obschon das Problem jetzt erledigt zu sein scheint, ist der Umstieg auf Layoutmanager dennoch zu empfehlen und irgendwann wohl unumgänglich.
 

Neue Themen


Zurück
Oben