ERLEDIGT
NEIN
NEIN
ANTWORTEN
0
0
ZUGRIFFE
864
864
EMPFEHLEN
-
Hallo,
ich habe mal wieder ein kleines Problem:
Es ist so, dass ich mit Hilfe eines Button ein neues JFrame öffnen will, indem eine JScrollPane enthalten ist, und wo wiederum eine JTable eingebaut ist. Wenn dieses Fenster nun geöffnet wird und ich eine Zeitverzögerung einbaue (mittels Thread.sleep()), wird die JTable erst nach dem letzten eingefügten Datensatz gezeichnet. Was ich aber möchte ist, dass nach jedem Einfügen einer neuen Zeile die Tabelle neu gezeichnet wird. Vielleicht ist es ein Thread-Problem?!
Zum besseren Verständnis, hier einmal ein Codebeispiel (zum leichteren Testen sind mehrere Klassen in einer Datei):
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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
package test; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.ArrayList; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class Test extends JFrame { public void start() { JButton btnStart = new JButton("Starten"); btnStart.addActionListener(new StartListener()); btnStart.setPreferredSize(new Dimension(200, 200)); this.getContentPane().setLayout(new BorderLayout()); this.getContentPane().add(btnStart, BorderLayout.CENTER); this.addWindowListener(new ExitListener()); this.pack(); this.setVisible(true); } class StartListener implements ActionListener { public void actionPerformed(ActionEvent arg0) { new FensterTest().neuesFensterOeffnen(); } } public class ExitListener extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } } class FensterTest extends JFrame { public void neuesFensterOeffnen() { DataModel model = new DataModel(); model.addColumn("Spalte 1"); model.addColumn("Spalte 2"); model.addColumn("Spalte 3"); DataTable table = new DataTable(model); JFrame fenster = new JFrame(); ArrayList<String> data = new ArrayList<String>(); data.add("1"); data.add("2"); data.add("3"); model.addRow(data.toArray()); JScrollPane panel = new JScrollPane(table.getTableHeader(), JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); panel.add(table); panel.setViewportView(table); panel.setPreferredSize(new Dimension(650, 350)); fenster.getContentPane().add(panel, BorderLayout.CENTER); fenster.pack(); fenster.setVisible(true); model.fireTableDataChanged(); try { Thread.sleep(4000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } data.clear(); data.add("4"); data.add("5"); data.add("6"); model.addRow(data.toArray()); } } class DataModel extends DefaultTableModel { public DataModel() { super(); } } class DataTable extends JTable { public DataTable(DataModel model) { super(model); } } public static void main(String[] args) { new Test().start(); } }
Ähnliche Themen
-
Background Color einer Zelle in einer JTable ändern
Von fastfiler im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 26.05.09, 10:42 -
jTable nach Datenänderung neu zeichnen?
Von shocking im Forum JavaAntworten: 3Letzter Beitrag: 27.04.07, 11:54 -
Kontur einer Region Zeichnen
Von Danielku15 im Forum .NET Grafik und SoundAntworten: 0Letzter Beitrag: 16.12.06, 23:19 -
Zeichnen einer Route auf einer Landkarte
Von schmellwitzer im Forum 3D Studio MaxAntworten: 2Letzter Beitrag: 05.08.06, 16:23 -
zeichnen einer funktion mit java
Von Ang im Forum JavaAntworten: 2Letzter Beitrag: 08.11.04, 19:48





Zitieren
Login





