Hallo Leute,
Ich habe ein JTable welches von AbstractTableModel abgeleitet ist.Man kann Zeilen selektieren und über ein popupmenu zeilen löschen und zufügen.Funktioniert auch alles.
Nun zu meinem Problem:
Ich möchte über das popupmenu eine selektierte Zeile deaktivieren(ausgrauen).
Die Zeilen werden übrigens in einem Vector gespeichert.
Ich hoffe mir kann jemand helfen.
Renderer:
Methode im Tablemodel:
Leider wird immer die ganze Tabelle deaktiviert
Gruß
Ohli...
Ich habe ein JTable welches von AbstractTableModel abgeleitet ist.Man kann Zeilen selektieren und über ein popupmenu zeilen löschen und zufügen.Funktioniert auch alles.
Nun zu meinem Problem:
Ich möchte über das popupmenu eine selektierte Zeile deaktivieren(ausgrauen).
Die Zeilen werden übrigens in einem Vector gespeichert.
Ich hoffe mir kann jemand helfen.
Renderer:
Code:
package gui;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
public class AnlSpglCellRenderer extends DefaultTableCellRenderer {
private static final long serialVersionUID = 1L;
// Konstruktor
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int col) {
JLabel lab = (JLabel)super.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, col);
Component c = super.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, col);
// Tabelleninhalte werden zentriert
lab.setHorizontalAlignment(JLabel.CENTER);
// Schriftart für Tabelle und Header
lab.setFont(new java.awt.Font("Century Gothic", Font.PLAIN, 10));
table.getTableHeader().setFont(
new java.awt.Font("Century Gothic", Font.PLAIN, 10));
if (col == 0) {
lab.setHorizontalAlignment(JLabel.LEFT);
}
// Farbzuweisung für Spalten
if (col == 1 || col == 7 || col == 12) {
Color hauptFarbe = new Color(94, 142, 169);
lab.setBackground(hauptFarbe);
}
else
if (isSelected) {
lab.setBackground(Color.GRAY);
} else {
lab.setBackground(Color.WHITE);
}
return lab;
}
}
Leider wird immer die ganze Tabelle deaktiviert
Code:
void disableRow(int row) {
DefaultTableCellRenderer render = new AnlSpglCellRenderer();
anlageSpiegel.tabAnlSpgl.setDefaultRenderer(String.class, render);
int selectRow = anlageSpiegel.tabAnlSpgl.getSelectedRow();
int selectCol = anlageSpiegel.tabAnlSpgl.getSelectedColumn();
Component c = (Component) anlageSpiegel.tabAnlSpgl.getCellRenderer(
selectRow, selectCol);
c.setEnabled(false);
fireTableDataChanged();
}
Ohli...