import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import javax.swing.*;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableModel;
public class SimpleTable
{
public static String[][] rowData = { { "Japan", "245", "245" }, { "USA", "240", "245" },
{ "Italien", "220", "245" }, { "Spanien", "217", "245" },
{ "Türkei", "215", "245" }, { "England", "214", "245" },
{ "Frankreich", "190", "245" }, { "Griechenland", "185", "245" },
{ "Deutschland", "180", "245" }, { "Portugal", "170", "245" } };
public static String[] columnNames = { "Land",
"Durchschnitt", "Age" };
public static boolean isFrame = true;
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTable table = new JTable(rowData, columnNames);
TableModel model = new SimpleTableModel();
table.setModel(model);
table.setBackground(Color.WHITE);
// ändert Größe der gesamten Tabelle (nur Sinnvoll falls JTable in
// JScrollPane)
table.setAutoResizeMode(0);
// Setze JTable sichtbar
table.setVisible(true);
// Umordnung der Spalten nicht erlaubt
table.getTableHeader().setReorderingAllowed(false);
// erlaubt Selektion der Elemente in einer Reihe
table.setRowSelectionAllowed(true);
// erlaubt Selektion der Elemente in einer Spalte
table.setColumnSelectionAllowed(true);
// hier wird festgelegt wie die Werte in der Tabelle selektiert werden
// dürfen
table.getSelectionModel().setSelectionMode(
ListSelectionModel.SINGLE_SELECTION);
BoxRenderer boxRenderer = new BoxRenderer();
table.setDefaultRenderer(Object.class, boxRenderer);
JScrollPane scrollPane = new JScrollPane(table);
frame.add(scrollPane, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
}
final class SimpleTableModel extends AbstractTableModel{
public static String[][] rowData = { { "Japan", "245", "245" }, { "USA", "240", "245" },
{ "Italien", "220", "245" }, { "Spanien", "217", "245" },
{ "Türkei", "215", "245" }, { "England", "214", "245" },
{ "Frankreich", "190", "245" }, { "Griechenland", "185", "245" },
{ "Deutschland", "180", "245" }, { "Portugal", "170", "245" } };
public static String[] columnNames = { "Land",
"Durchschnitt", "Age" };
SimpleTableModel(){
}
public boolean isCellEditable(int row, int col){
return false;
}
public void setValueAt(Object value, int row, int col){
}
@Override
public int getColumnCount() {
return 3;
}
@Override
public int getRowCount() {
// TODO Auto-generated method stub
return 10;
}
@Override
public Object getValueAt(int row, int col) {
// TODO Auto-generated method stub
return rowData[row][col];
}
}
final class BoxRenderer extends DefaultTableCellRenderer{
public static String[][] rowData = { { "Japan", "245", "245" }, { "USA", "240", "245" },
{ "Italien", "220", "245" }, { "Spanien", "217", "245" },
{ "Türkei", "215", "245" }, { "England", "214", "245" },
{ "Frankreich", "190", "245" }, { "Griechenland", "185", "245" },
{ "Deutschland", "180", "245" }, { "Portugal", "170", "245" } };
public static String[] columnNames = { "Land",
"Durchschnitt", "Age" };
protected boolean isSelected;
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int col) {
// TODO Auto-generated method stub
this.isSelected = isSelected;
return this;
}
public void paint(Graphics g) {
super.paint(g);
// paint cross onto selected cell
if (isSelected) {
g.setColor(Color.RED);
g.drawLine(0, 0, getWidth(), getHeight());
g.drawLine(0, getHeight(), getWidth(), 0);
}
}
}