moinmoin@ community,
ich versuche für unseren kleinen Verein ein Programm zu erstellen, um uns etwas Schreibarbeit abzunehmen. Ich möchte nun gern in der Tabelle einzelne Zellen färben. Der Plan ist, wenn etwas mit "2" endet, den Background blau zu färben. Endet der String mit "x" wird es orange.
Kann mir jemand sagen, ob es an meinem "TableCellRendererComponent" liegt oder wo steckt der Fehler?
ich versuche für unseren kleinen Verein ein Programm zu erstellen, um uns etwas Schreibarbeit abzunehmen. Ich möchte nun gern in der Tabelle einzelne Zellen färben. Der Plan ist, wenn etwas mit "2" endet, den Background blau zu färben. Endet der String mit "x" wird es orange.
Kann mir jemand sagen, ob es an meinem "TableCellRendererComponent" liegt oder wo steckt der Fehler?
Java:
package javaapplication8;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class NewClass extends JFrame {
JTable table;
DefaultTableModel model;
JPanel buttonPanel;
JButton button;
JLabel label;
public NewClass(JTable table, DefaultTableModel model, JPanel buttonPanel, JButton button) throws HeadlessException {
this.table = table;
this.model = model;
this.buttonPanel = buttonPanel;
this.button = button;
}
public NewClass() {
setTitle("Monatliche Übersicht");
setMinimumSize(new Dimension(1000, 900));
setPreferredSize(new Dimension(1000, 900));
int beginnMonat = 1;
int beginnJahr = 17;
Object[][] data = {};
String[] columnNames = {"Nr.",
"Firma",
String.valueOf(beginnMonat++)+"/"+String.valueOf(beginnJahr), //01-17
String.valueOf(beginnMonat++)+"/"+String.valueOf(beginnJahr), //02-17
String.valueOf(beginnMonat++)+"/"+String.valueOf(beginnJahr), //03-17
String.valueOf(beginnMonat++)+"/"+String.valueOf(beginnJahr), //04-17
String.valueOf(beginnMonat++)+"/"+String.valueOf(beginnJahr), //05-17
String.valueOf(beginnMonat++)+"/"+String.valueOf(beginnJahr), //06-17
String.valueOf(beginnMonat++)+"/"+String.valueOf(beginnJahr), //07-17
String.valueOf(beginnMonat++)+"/"+String.valueOf(beginnJahr), //08-17
String.valueOf(beginnMonat++)+"/"+String.valueOf(beginnJahr), //09-17
String.valueOf(beginnMonat++)+"/"+String.valueOf(beginnJahr), //10-17
String.valueOf(beginnMonat++)+"/"+String.valueOf(beginnJahr), //11-17
String.valueOf(beginnMonat++)+"/"+String.valueOf(beginnJahr++), //12-17
};
model = new DefaultTableModel(data, columnNames);
table = new JTable(model);
for(int i = 0; i < 100; i++){
model.addRow(createRow());
}
table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
// Add table and a Button panel to the frame
JScrollPane scrollPane = new JScrollPane(table);
getContentPane().add(scrollPane);
buttonPanel = new JPanel();
JScrollPane sp = new JScrollPane(buttonPanel);
sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
getContentPane().add(sp, BorderLayout.SOUTH);
// ---------------------------------------------------
button = new JButton("Add Column");
buttonPanel.add(button);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
table.setAutoCreateColumnsFromModel(false);
String header = "Col" + (table.getColumnCount() + 1);
model.addColumn(header);
TableColumn column = new TableColumn(table.getColumnCount());
column.setHeaderValue(header);
table.addColumn(column);
buttonPanel.getComponent(3).setEnabled(false);
buttonPanel.getComponent(4).setEnabled(false);
table.requestFocusInWindow();
}
});
// ---------------------------------------------------
button = new JButton("Remove Last Column");
buttonPanel.add(button);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int columns = model.getColumnCount();
if (columns > 0) {
if (!table.getAutoCreateColumnsFromModel()) {
int view = table.convertColumnIndexToView(columns - 1);
TableColumn column = table.getColumnModel().getColumn(
view);
table.getColumnModel().removeColumn(column);
}
model.setColumnCount(columns - 1);
}
table.requestFocusInWindow();
}
});
//////////////////////////////////////////////////////////////////////////////////////
// setze Spaltenbreite aller Spalten
//////////////////////////////////////////////////////////////////////////////////////
table.getTableHeader().setReorderingAllowed(false);
table.setAutoResizeMode(AUTO_RESIZE_OFF);
table.getColumnModel().getColumn(0).setPreferredWidth(25);
table.getColumnModel().getColumn(1).setPreferredWidth(150);
for(int i= 2; i<table.getColumnCount(); i++){
table.getColumnModel().getColumn(i).setPreferredWidth(40);
}
table.setDefaultRenderer(TableCellRendererComponent);
}
private Object[] createRow() {
Object[] newRow = new Object[2];
int row = table.getRowCount() + 1;
//newRow[0] = Integer.toString(row);
//newRow[1] = LETTERS.substring(row - 1, row);
return newRow;
}
public static void main(String[] args) {
monatlich frame = new monatlich();
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setLayout(new FlowLayout());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public Component TableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
//Verändern aufgrund des Zelleninhalts
if (value.toString().endsWith("2"))
table.setForeground(Color.BLUE);
else
table.setForeground(Color.RED);
if (value.toString().equals("x"))
table.setBackground(Color.ORANGE);
return this;
}
}