DefaultTableCellRenderer + rechtsklick ?

Frankster

Mitglied
Hi!

Wie kann ich dem Renderer beibrigen, dass er auch eine Zeile bunt hinterlegen soll wenn ich mit der rechten Maustaste drauf klicke ?

Ich hätte mir gedacht so, aber er verändert den Hintergrund der Zeile nicht. Aber er gibt HALLO aus *g*

Code:
else if (isSelected) {
            label.setBackground(lightBlue);
            table.addMouseListener(new MouseAdapter() {
                public void mousePressed(MouseEvent e) {
                    if (SwingUtilities.isRightMouseButton(e)) {
                        System.out.println(e.getPoint());
                        System.out.println("Hallo");
                        label.setBackground(darkBlue);
                    }
                }
            }
            );

Mfg
Frankster
 
Hi Frankster,

ich finde es immer ganz nützlich wenn jemand Erfahrungen gesammelt hat, diese dann auch der Gesamtheit zukommen zu lassen.

Danke
 
Ich poste mal den gesamten Code

Jener Teil der mit der rechten Maustaste zu tun hat ist mit // Rechter Maustaste gekennzeichnet!

Code:
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.table.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseAdapter;

public class ColoredTableCellRenderer implements TableCellRenderer, MouseListener {
    public ColoredTableCellRenderer() {
        try {
            jbInit();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private Color lightBlue = new Color(160, 160, 255);
    private Color darkBlue = new Color(64, 64, 128);
    boolean aufnahmeGestartet = false;
    boolean hasFocus;
    JLabel label;
    JTable table;

    public Component getTableCellRendererComponent(
            JTable table,
            Object value,
            boolean isSelected,
            boolean hasFocus,
            int row,
            int column
            ) {
        //Label erzeugen
        label = new JLabel((String) value);
        label.setOpaque(true);
        this.hasFocus = hasFocus;
        this.table = table;
        label.setFont(table.getFont());
        label.setForeground(table.getForeground());
        label.setBackground(table.getBackground());

        table.addMouseListener(this); // Rechte Maustaste

        if (hasFocus) {
            label.setBackground(lightBlue);

        } else if (isSelected) {
            label.setBackground(lightBlue);
        }
        if (aufnahmeGestartet == true) {
            if (row == 0) {
                label.setBackground(new Color(245, 149, 149));
                label.setFont(table.getFont().deriveFont(Font.BOLD));
            }
        }
        return label;
    }

    public void mouseClicked(MouseEvent e) { // Rechte Maustaste
        if (SwingUtilities.isRightMouseButton(e)) {
            table.setRowSelectionInterval(table.rowAtPoint(e.getPoint()), table.rowAtPoint(e.getPoint()));
        }
    }

    public void mouseEntered(MouseEvent e) {
    }

    public void mouseExited(MouseEvent e) {
    }

    public void mousePressed(MouseEvent e) {
    }

    public void mouseReleased(MouseEvent e) {
    }

}
 
Zurück