moinmoin,
liebe helferlinge, auch hierzu benötige ich bitte mal wieder einen tip, wie ich das besser hin bekommen.
meine tabelle wird alle 0,5 sec upgedatet. das problem ist, das diese "blinkt", also d.h. sowohl die daten innerhalb der tabelle, sowie die scrollbar, welche dann ünerflüssigerweise auch noch immer wieder nach ganz oben hüpft
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); habe ich schon gesetzt, hilft aber leider nicht wirklich viel.
ich tippe darauf, das dieses irgendwie mit dem defaultTable zu tun hat, aber was..? und warum ändert sich die scrollbar, wo diese doch mit dem frame zusammenhängt, und nicht direkt mit der table?
das problem kommt mir genau so vor, wie .repaint() aber die methode benutze ich ja garnicht.
mein dank gilt wie immer allen, die sich die mühe machen, da mal reinzugucken.
hoffe, ich bin bald so weit, mich auch mal produktiv bei fragen zu äußern.
liebe helferlinge, auch hierzu benötige ich bitte mal wieder einen tip, wie ich das besser hin bekommen.
meine tabelle wird alle 0,5 sec upgedatet. das problem ist, das diese "blinkt", also d.h. sowohl die daten innerhalb der tabelle, sowie die scrollbar, welche dann ünerflüssigerweise auch noch immer wieder nach ganz oben hüpft
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); habe ich schon gesetzt, hilft aber leider nicht wirklich viel.
ich tippe darauf, das dieses irgendwie mit dem defaultTable zu tun hat, aber was..? und warum ändert sich die scrollbar, wo diese doch mit dem frame zusammenhängt, und nicht direkt mit der table?
das problem kommt mir genau so vor, wie .repaint() aber die methode benutze ich ja garnicht.
Code:
public class MainTable extends JFrame{ //implements ActionListener{
public MainTable()
{
super("MainTable");
while (isrunning == true){
//System.out.println("gugge nach neuen daten ");
try{
if(i == 0){
this.TabelleErzeugen(holeDaten());
//this.TabelleErzeugen();
this.initGUI();
i++;
}
//Bei Änderung wird, wird TabelleUpdate aufgerufen.
if(neueDaten == true){
this.TabelleUpdate(holeDaten());
neueDaten = false;
}
holeDaten();
Thread.sleep(500;
}
catch (InterruptedException e) {
e.getMessage();
}
}
dbZugriff.CloseDB();
}
private JFrame frame = new JFrame();
private Vector vTitel;
private Vector vDaten;
private JTable table;
private boolean isrunning = true;
private int runde = 0;
private int aufruf = 0;
private DefaultTableModel defaultTableModel;
DBZugriff dbZugriff = new DBZugriff();
public boolean neueDaten = false;
public int firstrunner = 0;
int i = 0;
String rsold = "";
String rsnew = "";
ResultSet rs = null;
//Titel für JTable
public final static Vector COLUMN_IDENTIFIERS = new Vector() {
{
add("WKN");
add("1");
add("2");
add("3");
add("4");
add("5");
add("6");
add("Letzter Kurs Zeit/Datum");
}
};
public void GUI() {
Vector vDaten = new Vector();
Vector vTitel = new Vector();
Vector vtemp = new Vector();
}
public Vector holeDaten() {
TryFloat tryFloat = new TryFloat();
DBZugriff getDB = new DBZugriff();
int i = 0;
String dbLogin ="user" ;
String dbPassword ="user";
dbZugriff.OpenDB(dbLogin, dbPassword);
Vector results = new Vector();
try {
rs = dbZugriff.statement.executeQuery("SELECT 1, 2, 3, 4, 5, 6, 7, LETZTER_ZEIT_DATUM FROM datenbank ORDER BY 1 DESC,4 ASC");//order by LETZTER_ZEIT_DATUM DESC"); //
while (rs.next()) {
Vector scheine = new Vector();
scheine.add(rs.getString("1"));
scheine.add(tryFloat.setFloat(rs.getString("2"))/1000);
scheine.add(rs.getString("3"));
scheine.add(rs.getString("4"));
scheine.add(rs.getString("5"));
scheine.add(rs.getString("6"));
scheine.add(rs.getString("7"));
scheine.add(rs.getString("LETZTER_ZEIT_DATUM"));
results.add(scheine);
}
rsnew = results.toString();
if (rsold.equals(rsnew)){
neueDaten = false;
}
if (rsold != rsnew){
neueDaten = true;
rsold=results.toString();
}
else{
}
return results;
}
catch (SQLException e)
{
e.printStackTrace();
}
return results;
}
public void TabelleErzeugen(Vector vDaten)
{
defaultTableModel = new DefaultTableModel(1, 8);
//defaultTableModel.setColumnIdentifiers(COLUMN_IDENTIFIERS);
defaultTableModel.setDataVector(vDaten, COLUMN_IDENTIFIERS);
table = new JTable(defaultTableModel);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
defaultTableModel.fireTableDataChanged();
//table.setSize(535,800);
//frame.setSize(535,800);
table.setDefaultRenderer(Object.class, new MyTableCellRenderer());
table.getColumn("WKN").setPreferredWidth(60);
table.getColumn("Basispreis").setPreferredWidth(50);
table.getColumn("Währung").setPreferredWidth(33);
table.getColumn("Fälligkeit").setPreferredWidth(80);
table.getColumn("Bez.Verh").setPreferredWidth(25);
table.getColumn("Geldkurs").setPreferredWidth(60);
table.getColumn("Briefkurs").setPreferredWidth(60);
table.getColumn("Letzter Kurs Zeit/Datum").setPreferredWidth(140);
table.getColumn("WKN").setMinWidth(60);
table.getColumn("Basispreis").setMinWidth(50);
table.getColumn("Währung").setMinWidth(33);
table.getColumn("Fälligkeit").setMinWidth(80);
table.getColumn("Bez.Verh").setMinWidth(25);
table.getColumn("Geldkurs").setMinWidth(60);
table.getColumn("Briefkurs").setMinWidth(60);
table.getColumn("Letzter Kurs Zeit/Datum").setMinWidth(140);
table.getColumn("WKN").setMaxWidth(60);
table.getColumn("Basispreis").setMaxWidth(50);
table.getColumn("Währung").setMaxWidth(33);
table.getColumn("Fälligkeit").setMaxWidth(80);
table.getColumn("Bez.Verh").setMaxWidth(25);
table.getColumn("Geldkurs").setMaxWidth(60);
table.getColumn("Briefkurs").setMaxWidth(60);
table.getColumn("Letzter Kurs Zeit/Datum").setMaxWidth(140);
//table.getColumnModel();
}
public void TabelleUpdate(Vector vDaten)
{
Iterator it = vDaten.iterator();
while (it.hasNext()){
it.next();
//System.out.println(it.next());
}
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
defaultTableModel.setDataVector(vDaten, COLUMN_IDENTIFIERS);
defaultTableModel.fireTableDataChanged();
//table.setSize(535,800);
//frame.setSize(535,800);
table.getColumn("WKN").setPreferredWidth(60);
table.getColumn("Basispreis").setPreferredWidth(50);
table.getColumn("Währung").setPreferredWidth(33);
table.getColumn("Fälligkeit").setPreferredWidth(80);
table.getColumn("Bez.Verh").setPreferredWidth(25);
table.getColumn("Geldkurs").setPreferredWidth(60);
table.getColumn("Briefkurs").setPreferredWidth(60);
table.getColumn("Letzter Kurs Zeit/Datum").setPreferredWidth(140);
table.getColumn("WKN").setMinWidth(60);
table.getColumn("Basispreis").setMinWidth(50);
table.getColumn("Währung").setMinWidth(33);
table.getColumn("Fälligkeit").setMinWidth(80);
table.getColumn("Bez.Verh").setMinWidth(25);
table.getColumn("Geldkurs").setMinWidth(60);
table.getColumn("Briefkurs").setMinWidth(60);
table.getColumn("Letzter Kurs Zeit/Datum").setMinWidth(140);
table.getColumn("WKN").setMaxWidth(60);
table.getColumn("Basispreis").setMaxWidth(50);
table.getColumn("Währung").setMaxWidth(33);
table.getColumn("Fälligkeit").setMaxWidth(80);
table.getColumn("Bez.Verh").setMaxWidth(25);
table.getColumn("Geldkurs").setMaxWidth(60);
table.getColumn("Briefkurs").setMaxWidth(60);
table.getColumn("Letzter Kurs Zeit/Datum").setMaxWidth(140);
}
public void initGUI()
{
// JTable initialisieren
frame = new JFrame("Viewer");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new JScrollPane(table), "Center");
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args)
{
MainTable mainTable = new MainTable();
}
}
mein dank gilt wie immer allen, die sich die mühe machen, da mal reinzugucken.
hoffe, ich bin bald so weit, mich auch mal produktiv bei fragen zu äußern.