Hallo liebe Community,
ich hoffe ihr könnt mir weiter helfen. Ich weiß es gab zu diesem Thema schon mehrere Posts doch, leider hat mir keiner davon bei der Lösung meines Problems geholfen.
Und zwar habe ich mir durch ein Skript von einem Orcale Server eine Tabelle auslesen lassen. Diese Tabelle habe ich nun in einer JTable ausgeben lassen.
Nun fängt mein Problem an.
Ich möchte zwei Spalten subtrahieren. Und zwar möchte ich eine Start-Zeit von einer End-Zeit abziehen um die gesamt Zeit zu ermitteln.
Die Spalte in der die Start-Zeit steht heißt Start-Zeit. Die End-Zeit Spalte heißt End-Zeit Spalte.
Das Problem ist das in den Spalten zuerst das Datum und dann die Uhrzeit steht. So sieht das dann aus: tt.mm.jjjj St.mm.se.
Die ganzen Zeilen sollen dann eingefärbt werden je nachdem ob das Ergebnis <, > oder = einer anderen Zahl ist
Leider weiß ich gar nicht wo ich da anfangen soll geschweige den wie ich das machen muss.
Ich poste euch nochmal meine 2 Klassen dazu.
Das ist die Klasse die die Tabelle ausliest und in einer JTable ausgibt:
Das ist die Klasse in der ich angefangen habe einen TableCellRenderer zu bauen aber ich komme einfach nicht weiter.
Würde mich um schnelle Hilfe freuen denn eigentlich muss ich morgen damit fertig sein.
Würde mich freuen wenn ihr mir die Lösung direkt in meinen Code schreiben könntet.
Vielen Dank euch schon mal. Hoffe ich könnt mir helfen.
MfG
Dino264
ich hoffe ihr könnt mir weiter helfen. Ich weiß es gab zu diesem Thema schon mehrere Posts doch, leider hat mir keiner davon bei der Lösung meines Problems geholfen.
Und zwar habe ich mir durch ein Skript von einem Orcale Server eine Tabelle auslesen lassen. Diese Tabelle habe ich nun in einer JTable ausgeben lassen.
Nun fängt mein Problem an.
Ich möchte zwei Spalten subtrahieren. Und zwar möchte ich eine Start-Zeit von einer End-Zeit abziehen um die gesamt Zeit zu ermitteln.
Die Spalte in der die Start-Zeit steht heißt Start-Zeit. Die End-Zeit Spalte heißt End-Zeit Spalte.
Das Problem ist das in den Spalten zuerst das Datum und dann die Uhrzeit steht. So sieht das dann aus: tt.mm.jjjj St.mm.se.
Die ganzen Zeilen sollen dann eingefärbt werden je nachdem ob das Ergebnis <, > oder = einer anderen Zahl ist
Leider weiß ich gar nicht wo ich da anfangen soll geschweige den wie ich das machen muss.
Ich poste euch nochmal meine 2 Klassen dazu.
Das ist die Klasse die die Tabelle ausliest und in einer JTable ausgibt:
Java:
package Test;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;
import oracle.jdbc.*;
import oracle.jdbc.pool.OracleDataSource;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
public class Sqlselection implements ActionListener {
private static final String EXIT_ON_CLOSE = null;
@Override
public void actionPerformed(ActionEvent e) {
// public final static Vector COLUMN_IDENTIFIERS = new Vector()
// {
// add("id");
// add("name");
// add("dateOfBirth");
// add("balance");
// };
//};
try
{
OracleDataSource ods = new OracleDataSource();
ods.setUser("*******");
ods.setPassword("*******");
ods.setURL("jdbc:oracle:thin:@*********************************");
OracleConnection con = (OracleConnection)(ods.getConnection ());
Statement s1 = con.createStatement();
ResultSet rs = s1.executeQuery("select * from *****************");
// JTable table = new JTable(buildTableModel(rs));
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
// TableColumn tm = table.getColumnModel().getColumn(0);
// tm.setCellRenderer(new MyColumnRenderer());
// Table.setDefaultRenderer( Object.class, new DefaultTableCellRenderer() {
// TableColumn tm = table.getRowModel().getRow(0);
JOptionPane.showMessageDialog(null, new JScrollPane(table));
DefaultTableCellRenderer ren = new myclass();
table.setDefaultRenderer(Object.class, ren);
if(rs!=null)
{
while (rs.next())
{
// System.out.println("concole, jjd, 34785, Hallo, ");
System.out.printf(
"%s, %s, %s, %s, %s, %s, %s, %s, %s, %s%n",
rs.getString(1),
rs.getString(2),
rs.getString(3),
rs.getString(4),
rs.getString(5),
rs.getString(6),
rs.getString(7),
rs.getString(8),
rs.getString(9),
rs.getString(10),
rs.getString(11)
);
}
}
}
catch (Exception e2)
{
e2.printStackTrace();
}
}
// @SuppressWarnings("null")
private static DefaultTableModel buildTableModel(ResultSet rs)
throws SQLException {
JTable table;
DefaultTableModel defaultTableModel = null;
ResultSetMetaData metaData = rs.getMetaData();
setDefaultCloseOperation(EXIT_ON_CLOSE);
// defaultTableModel.setColumnIdentifiers(COLUMN_IDENTIFIERS);
table = new JTable(defaultTableModel);
table.setEnabled(false);
// names of columns
Vector<String> columnNames = new Vector<String>();
int columnCount = metaData.getColumnCount();
for (int column = 1; column <= columnCount; column++) {
columnNames.add(metaData.getColumnName(column));
}
// data of the table
// defaultTableModel.setColumnIdentifiers(COLUMN_IDENTIFIERS);
Vector<Vector<Object>> data = new Vector<Vector<Object>>();
while (rs.next()) {
Vector<Object> vector = new Vector<Object>();
for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
vector.add(rs.getObject(columnIndex));
}
data.add(vector);
}
return new DefaultTableModel(data, columnNames);
}
private static void setDefaultCloseOperation(String exitOnClose) {
// TODO Auto-generated method stub
}
}
Das ist die Klasse in der ich angefangen habe einen TableCellRenderer zu bauen aber ich komme einfach nicht weiter.
Java:
package Test;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
public class myclass extends DefaultTableCellRenderer {
private static final int VALIDATION_COLUMN = 4;
public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus,int row,int col)
{
Component comp = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
String s = table.getModel().getValueAt(row, VALIDATION_COLUMN ).toString();
if(s.equalsIgnoreCase("1"))
{
System.out.println("Open");
comp.setBackground(Color.RED);
}
return( comp );
}
}
// public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
// {
//
// super.getTableCellRendererComponent (table, value, isSelected, hasFocus, row, column);
// double TRANSFER_TO_UGIS_DONE = Double.parseDouble(String.valueOf(value));
// setForeground(Color.BLACK);
// if (TRANSFER_TO_UGIS_DONE < 5)
// {
// setForeground(Color.RED);
// }
// return this;
// }
//
// public static void setDefaultRenderer(Class<Object> class1,
// DefaultTableCellRenderer defaultTableCellRenderer) {
// TODO Auto-generated method stub
//
// }
// Component component = super.getTableCellRendererComponent( table, value, isSelected, hasFocus, row, column);
// int TRANSFER_TO_UGIS_DONE = ((Integer) table.getModel().getValueAt(row, 1 )).intValue();
// if( TRANSFER_TO_UGIS_DONE == 1 )
// {
// component.setBackground(Color.yellow);
// }
// else
// {
// component.setBackground(Color.cyan);
// }
// return component;
// }
//
// public static void setDefaultRenderer(Class<Object> class1,
// DefaultTableCellRenderer defaultTableCellRenderer) {
// TODO Auto-generated method stub
//
// }
Würde mich um schnelle Hilfe freuen denn eigentlich muss ich morgen damit fertig sein.
Würde mich freuen wenn ihr mir die Lösung direkt in meinen Code schreiben könntet.
Vielen Dank euch schon mal. Hoffe ich könnt mir helfen.
MfG
Dino264