Hallo, ich habe ein Problem mit dem JTabbedPane.
Eigentlich möchte ich mehrere Tabs mit Tabellen füllen.
Jedoch sind mir ein paar Dinge aufgefallen, die ich nicht verstehe.
Hier ein Beispielprogramm:
Wenn ich das so aufbauen lassen würde, würde die Tabelle nur in Tab 5 dargestellt.
Ziehe ich die Instanzierung der ScrollPane aus der Schleife, so wird nur der 5. Tab dargestellt:
Irgendwie scheint es Probleme mit dem gleichen Objektnamen zu geben.
Gebe ich dem Tab immer ein neues Objekt, funktioniert es, wie gewollt:
Mache ich es jedoch wieder mit einem gleichen Objekt, klappt es wieder nicht und die Tabelle wird nur im letzten Tab dargestellt.
Kann mir jemand erklären, wie das kommt?!
Gruß
Sdy
Eigentlich möchte ich mehrere Tabs mit Tabellen füllen.
Jedoch sind mir ein paar Dinge aufgefallen, die ich nicht verstehe.
Hier ein Beispielprogramm:
Java:
package test;
import java.awt.Button;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
public class JTableTest extends JFrame {
private final String[] columnNames = {"Name", "Vorname"};
private final String[][] data = {{"Foo","Bar"},{"Bla","Bla"}};
public JTableTest(){
setSize(1000, 600);
setMinimumSize(new Dimension(1000, 600));
setTitle("Test");
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
setLocation((d.width - getSize().width)/2, (d.height - getSize().height)/2);
setDefaultCloseOperation(EXIT_ON_CLOSE);
// tabpane
JTabbedPane tabpane = new JTabbedPane();
// tabelle
JTable table = new JTable(data, columnNames);
for(int i = 0; i < 5; i++){
// scrollbalken falls notwendig
JScrollPane scroll = new JScrollPane(table);
tabpane.addTab(String.valueOf(i+1) + ". Tab", scroll); // stellt alle tabs dar, jedoch ist die Tabelle nur im 5. Tab
}
add(tabpane);
setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new JTableTest();
}
}
Wenn ich das so aufbauen lassen würde, würde die Tabelle nur in Tab 5 dargestellt.
Ziehe ich die Instanzierung der ScrollPane aus der Schleife, so wird nur der 5. Tab dargestellt:
Java:
// scrollbalken falls notwendig
JScrollPane scroll = new JScrollPane(table);
for(int i = 0; i < 5; i++){
tabpane.addTab(String.valueOf(i+1) + ". Tab", scroll); // Stellt nur den 5. Tab dar
//tabpane.addTab(String.valueOf(i+1) + ". Tab", new Button(String.valueOf(i+1))); // würde alle tabs darstellen
}
Irgendwie scheint es Probleme mit dem gleichen Objektnamen zu geben.
Gebe ich dem Tab immer ein neues Objekt, funktioniert es, wie gewollt:
Java:
for(int i = 0; i < 5; i++){
//tabpane.addTab(String.valueOf(i+1) + ". Tab", scroll); // Stellt nur den 5. Tab dar
tabpane.addTab(String.valueOf(i+1) + ". Tab", new JScrollPane(new JTable(data, columnNames)));
}
Mache ich es jedoch wieder mit einem gleichen Objekt, klappt es wieder nicht und die Tabelle wird nur im letzten Tab dargestellt.
Java:
for(int i = 0; i < 5; i++){
//tabpane.addTab(String.valueOf(i+1) + ". Tab", scroll); // Stellt nur den 5. Tab dar
tabpane.addTab(String.valueOf(i+1) + ". Tab", new JScrollPane(table));
}
Kann mir jemand erklären, wie das kommt?!
Gruß
Sdy