package table;
/*
* TableCalcDemo.java
*/
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
public class TableCalcDemo extends JFrame {
private JTable table;
private Color farbe1;
private Color farbe2;
private Color farbe3;
private Object[] E2Label = new Object[]{"Bezeichnung", "1", "2", "3","4", "Bezeichnung", "OPS-Kode"};
public TableCalcDemo() {
super("TableCalcDemo");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(800,300);
setLocationRelativeTo(null);
table = new JTable();
Object[][] data =
{
{
"", "Jahresfälle: 2)", new Integer("0"), new Integer("0"), new Integer("0"), new Integer("0"), ""
},
{
"", "", new Integer("3"), new Integer("2"), new Integer("0"), new Integer("0"), ""
},
{
"Summe der ZE bezogen auf die Jahresfälle", "", new Integer("0"), new Integer("0"), new Integer("0"), new Integer("0"), ""
},
{
"Summe der ZE bezogen auf die Überlieger", "", new Integer("0"), new Integer("0"), new Integer("0"), new Integer("0"), ""
},
{
"Summe ZE insgesamt", "", new Integer("0"), new Integer("0"), new Integer("0"), new Integer("0"), ""
}
};
final TD1Model tbl = new TD1Model(data, E2Label);
final JTable table = new JTable(tbl) {
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Component c = super.prepareRenderer(renderer, row, column);
farbe1 = new Color(200,255,200);
farbe2 = new Color(255,200,200);
farbe3 = new Color(200,200,255);
/* Hier kommt zwar kein Compilerfehler, aber zur Laufzeit knallt mir die Anwendung genau hier um die
Ohren*/
if (column == 3){
for (int zaehler = 0; zaehler < tbl.getRowCount(); zaehler++)
tbl.setValueAt((Integer)tbl.getValueAt(zaehler, 2) * (Integer)tbl.getValueAt(zaehler, 3), zaehler, 4);
}
if (!isRowSelected(row)) {
c.setBackground(Color.white);
if(row > tbl.getRowCount()-4) {
c.setBackground(farbe3);
}
}
if (!isColumnSelected(column)) {
if (column==0 && row !=0 && row !=tbl.getRowCount() && row !=tbl.getRowCount()-1 && row !=tbl.getRowCount()-2 && row !=tbl.getRowCount()-3 && row != 0 && row != 1) {
c.setBackground(farbe2);
}
if (column==1 && row != 0 && row != 1 &&row !=tbl.getRowCount() && row !=tbl.getRowCount()-1 && row !=tbl.getRowCount()-2 && row !=tbl.getRowCount()-3) {
c.setBackground(farbe1);
}
if (column==2 && row != 0 && row != 1 && row !=tbl.getRowCount() && row !=tbl.getRowCount()-1 && row !=tbl.getRowCount()-2 && row !=tbl.getRowCount()-3) {
c.setBackground(farbe1);
}
if (column==3 && row != 0 && row != 1 && row !=tbl.getRowCount() && row !=tbl.getRowCount()-1 && row !=tbl.getRowCount()-2 && row !=tbl.getRowCount()-3) {
c.setBackground(farbe2);
}
if (column==4 && row != 0 && row != 1 && row !=tbl.getRowCount() && row !=tbl.getRowCount()-1 && row !=tbl.getRowCount()-2 && row !=tbl.getRowCount()-3) {
c.setBackground(farbe3);
}
if (column==5 && row != 0 && row != 1 && row !=tbl.getRowCount() && row !=tbl.getRowCount()-1 && row !=tbl.getRowCount()-2 && row !=tbl.getRowCount()-3) {
c.setBackground(farbe2);
}
if (column==6 && row != 0 && row != 1 && row !=tbl.getRowCount() && row !=tbl.getRowCount()-1 && row !=tbl.getRowCount()-2 && row !=tbl.getRowCount()-3) {
c.setBackground(farbe2);
}
}
return c;
}
};
//table.setShowHorizontalLines(false);
//table.setShowVerticalLines(false);
/*Den sichtbaren Bereich der Tabelle definieren*/
table.setPreferredScrollableViewportSize(new Dimension( 2000, 500 ));
/*JScrollPane hinzufügen zum Scrollen*/
JScrollPane sp = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
sp.setBounds(10,20,100,20);
add(sp);
// spalten nicht resizable machen, nicht zulassen dass die spaltenreihenfolge geändert werden kann
JTableHeader header = table.getTableHeader();
header.setResizingAllowed(false);
header.setReorderingAllowed(false);
JComponent component = null;
// Diese Zeilen sind für das Selektieren einer ganzen Spalte
//table.setColumnSelectionAllowed(true);
//table.setRowSelectionAllowed(false);
/*Breite der Column beeinflussen*/
table.getColumnModel().getColumn(0).setMinWidth(75);
table.getColumnModel().getColumn(1).setMinWidth(75);
table.getColumnModel().getColumn(2).setMinWidth(75);
table.getColumnModel().getColumn(3).setMinWidth(100);
table.getColumnModel().getColumn(4).setMinWidth(75);
table.getColumnModel().getColumn(5).setMinWidth(75);
table.getColumnModel().getColumn(6).setMinWidth(75);
}
public static void main(String args[]) {new TableCalcDemo().setVisible(true);}
class TD1Model extends DefaultTableModel{
public TD1Model(Object[][] data, Object[] cols){
super(data, cols);
}
Class[] types = new Class [] {
String.class, Integer.class, Integer.class, Integer.class, Integer.class, String.class, String.class
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
}
}