ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
721
721
EMPFEHLEN
-
So jetz meld ich mich auch mal als Autor zu Wort
Hier ist meine momentane Situation:
Ich lass meine Panels dynamisch aus XML Dateien aufbauen, was bisher auch wunderbar funktioniert hat, nur wollte ich jetzt die Möglich hinzufügen, dass man JTables benutzen kann, die in einer JScrollPane liegen.
Momentan wird die JTable so eingebaut:
-> erzeugen des JPanels
-> setzen der Attribute
->-> erzeugen der JScrollPane
->-> setzen der Attribute
->-> hinzufügen der JScrollPane an das Panel
->->-> erzeugen der JTable
->->-> setzen der Attribute
->->-> hinzufügen der JTable an die Pane
Desweiteren soll die JTable leer erzeugt werden und nur die Header anzeigen, da die Table erst gefüllt wird, wenn der Benutzer auf Suchen klickt.
Mein eigentliches Problem ist nun folgendes:
- die Header Leiste wird gar nicht erst angezeigt
- die ScrollBar wird zwar angezeigt, wird aber übermalt sobald Einträge in die Table kommen
- scrollen ist gar nicht erst möglich
Hab mal versucht den Aufbau nicht dynamisch nachzubauen:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class TableTest { public static void main(String[] args) { JFrame frame = new JFrame(); JScrollPane pane = new JScrollPane(); pane.setPreferredSize(new Dimension(300,300)); pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); JTable table = new JTable(); for(int i=0; i<100; i++) { addEmptyRow(table); } table.setSize(300, 300); table.setPreferredSize(table.getSize()); table.setVisible(true); pane.add(table); frame.getContentPane().add(pane); System.out.println(table.getRowCount()); frame.setSize(500,500); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); frame.setLocationRelativeTo(null); } public static void addEmptyRow(JTable pTable) { DefaultTableModel tModel = (DefaultTableModel) pTable.getModel(); tModel.addRow((Object[]) null); tModel.fireTableStructureChanged(); } }
Ich hoffe wirklich dass mir hier jemand helfen kann. Ich sitz hier schon einige Stunden dran und es ist keine Lösung in sicht.
-
Hi,
hier, so geht es bei mir.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class TableTest { public static void main(String[] args) { JFrame frame = new JFrame(); DefaultTableModel model = new DefaultTableModel(); model.setColumnIdentifiers(new String[]{"Test1", "Test2", "Test3"}); JTable table = new JTable(model); for(int i=0; i<100; i++) { addEmptyRow(table); } table.setSize(300, 300); table.setPreferredSize(table.getSize()); table.setVisible(true); JScrollPane pane = new JScrollPane(table); pane.setPreferredSize(new Dimension(300,300)); pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); frame.getContentPane().add(pane); System.out.println(table.getRowCount()); frame.setSize(500,500); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); frame.setLocationRelativeTo(null); } public static void addEmptyRow(JTable pTable) { DefaultTableModel tModel = (DefaultTableModel) pTable.getModel(); tModel.addRow(new String[]{"1", "2", "3"}); } }
Ansonsten kannst du auch, statt die Table im Constructor des ScrollPanes zu übergeben, sie mit
hinzufügenCode java:1
pane.setViewportView(table)
Gruß
Der WolfGeändert von Der Wolf (17.08.10 um 15:11 Uhr)
-
Vielen Dank für die Antwort, habe aber eine andere Lösung gefunden.
Und zwar habe ich mir eine eigene Klasse geschrieben die von JScrollPane erbt und bereits eine eigene Table beinhaltet. Dies hat den Hintergrund, dass ich jetz beim Erzeugen einer Table nicht mehr 2 sondern nur 1 Klasse per Hand erzeugen muss.
Hier mal der Code für die dies interessiert (Kann nützlich sein, da eine Table ja im Normalfall eh immer einen Scrollbalken hat):
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; import de.***.********.application.gui.jxl.JXLUtils; public class ScrollTable extends JScrollPane { private static final long serialVersionUID = 1L; private static final ThisTable table = new ThisTable(); public ScrollTable() { super(table); table.setVisible(true); } public void addColumn(String pTitle) { DefaultTableModel tModel = (DefaultTableModel) table.getModel(); TableColumn tCol = new TableColumn(tModel.getColumnCount()); tCol.setHeaderValue(pTitle); table.addColumn(tCol); tModel.addColumn(pTitle); tModel.fireTableStructureChanged(); } public void addColumns(String... pTitles) { for (String tTitle : pTitles) { addColumn(tTitle); } } public void addColumns(String pTitles) { Object tOptions[] = pTitles.split("\\s*,\\s*"); tOptions = JXLUtils.trim(tOptions); for (Object tObj : tOptions) { addColumn((String) tObj); } } public void addEmptyRow() { DefaultTableModel tModel = (DefaultTableModel) table.getModel(); tModel.addRow((Object[]) null); tModel.fireTableStructureChanged(); } public int getRowCount() { return table.getModel().getRowCount(); } private static class ThisTable extends JTable { private static final long serialVersionUID = 1L; private ThisTable() { super(); setVisible(true); } } }
Ähnliche Themen
-
JScrollPane zerschießt JTable
Von Lantis im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 4Letzter Beitrag: 14.05.10, 16:01 -
JTable auf JScrollPane nicht sichtbar
Von Kamikaze im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 26.06.09, 07:41 -
JTable/JScrollpane automatisch an Fenstergröße anpassen
Von Kalmuecke im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 4Letzter Beitrag: 21.03.08, 15:19 -
JTable mit JScrollPane
Von flashOr im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 4Letzter Beitrag: 21.06.07, 13:01 -
JTable mit JScrollPane
Von zerix im Forum JavaAntworten: 2Letzter Beitrag: 11.10.05, 13:58





Zitieren
Login




