Die Zeile einer JTable verändert beim klicken ihre Farbe?

Status
Nicht offen für weitere Antworten.

Nuke

Mitglied
Hallo,

ich habe für meine JTable Zeilen eine abwechselnde Farbe einmal weiß und einmal hellgrau um die lesbarkeit zu erhöhen. Nun ist es so, wenn ich mit der Maus auf eine Zeile klicke sprich mousePress() die hellgrau sein muss dann wird diese weiß dargestellt? Will heißen das Klicken der Maus oder das setzen der Selektion macht aus hellgrau weiß.

Weiß jemand warum?


Code:
public class ImageListePanel extends JPanel implements ActionListener , ListSelectionListener
{
   
	static final long serialVersionUID = 1L;
   
	private SettingsPanel settings;
    private  JTextField homepageTF    = new JTextField("bla");       
    private  JButton loadListBT = new JButton("Liste laden");
    private  JButton saveListBT = new JButton("Liste speichern");
    private  JButton pasteUrlBT    = new JButton();
    private  JButton refreshBT     = new JButton();    
    private  JButton addRowBT		= new JButton("Add");
    private  JButton delRowBT		= new JButton("Del");
    
    private DefaultListModel listModel = new DefaultListModel();
    private JList liste = new JList(listModel);
    private JScrollPane listbereich = new JScrollPane(liste);
    private String[] spaltennamen = {"Status" , "Gruppe" , "Programm" , "Aufgabe" , "Datenträger" };
    private String[][] tabellendaten = new String [700][5];
   
    DefaultTableModel dm;
    JTable tabelle;
  
    private  DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); // Format für 24-Stunden-Anzeige
    private  String str = dateFormat.format(new Date());
    protected Map<String, String> colormap = new HashMap<String, String>();
    private Color selColor;
    
    public ImageListePanel() {
      
    	setLayout(null);
        add(homepageTF);
        add(loadListBT);
        add(saveListBT);      
        add(pasteUrlBT);
        add(refreshBT);
        add(listbereich);
        add(addRowBT);
        add(delRowBT);
        
        homepageTF.setBounds(826,440,159,30);
        listbereich.setBounds(826,0,160,340);
        loadListBT.setBounds(826,468,158,60);
        saveListBT.setBounds(826,529,158,60);       
        addRowBT.setBounds(826,341,40,40);
        delRowBT.setBounds(867,341,40,40);
        
        loadListBT.setIcon(new ImageIcon("images/pasteurl.png"));
        saveListBT.setIcon(new ImageIcon("images/refresh.png"));
        
        addRowBT.setIcon(new ImageIcon("images/addrow.png"));
        delRowBT.setIcon(new ImageIcon("images/delrow.png"));
        
        homepageTF.setMargin(new Insets(1, 3, 1, 1));
       
        
       // btReset.setFont(new Font("Arial",Font.BOLD, 12));
      
        
        dm = new DefaultTableModel(tabellendaten,spaltennamen);
        tabelle = new JTable( dm ){
        			/**
			 * 
			 */
			private static final long serialVersionUID = 1L; 
					Class[] types = new Class [] {        			
                    Boolean.class, String.class, String.class, String.class, String.class
                };
            @SuppressWarnings("unchecked")
			public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }
        	public Component prepareRenderer(TableCellRenderer renderer, int rowIndex, int vColIndex)
        	{
				Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
				/*---------------------------------------------------------------------------*/
				if (rowIndex % 2 == 0 && !isCellSelected(rowIndex, vColIndex))
				{
	                c.setBackground(new Color (245,245,245));
	            }
				else
				{
	                c.setBackground(getBackground());
	            }
				/*----------------------------------------------------------------------------*/
				return c;
			}
		};
		
		
		 /* tabelle.addMouseMotionListener(new MouseMotionAdapter()
		  {
	            public void mouseMoved(final MouseEvent evt)
	            {
	                Point p = evt.getPoint();
	                int row = tabelle.rowAtPoint(p);
	                int column = tabelle.columnAtPoint(p);
	                tabelle.editCellAt(row, column);
	            }
	        });*/
		  
		  
		 /* tabelle.addMouseListener(new MouseAdapter()
		  
		  {
			  public void mousePressed(MouseEvent evt)
			  {
				  
				  
				  
				  ;}
			  });*/ 
	    	     	  
	   
	    
	  	 
		
                
        tabelle.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
        tabelle.setPreferredScrollableViewportSize(tabelle.getPreferredSize());
        
        JScrollPane scrollPane = new JScrollPane( tabelle );
        add(scrollPane);
        scrollPane.setBounds(0,0,826,650);
        tabelle.setRowHeight(25);
                
        tabelle.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
        scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        
        tabelle.setAutoCreateRowSorter(true);
     
        pasteUrlBT.addActionListener(this);
        refreshBT.addActionListener(this);
        
        liste.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        liste.setVisibleRowCount(1);
        liste.addListSelectionListener((ListSelectionListener) this);
        listbereich.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        listbereich.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        liste.setCellRenderer(new Renderer());
        
        listModel.addElement("MPG Lehrer 125");
        listModel.addElement("AEG Schüler xp");
        listModel.addElement("MPG Lehrer 125");
        listModel.addElement("AEG Schüler xp");
        listModel.addElement("MPG Lehrer 125");
        listModel.addElement("MPG Lehrer 125");
        listModel.addElement("MPG Lehrer 125");
        listModel.addElement("MPG Lehrer 125");
        listModel.addElement("MPG Lehrer 125");
        listModel.addElement("AEG Schüler xp");
        listModel.addElement("MPG Lehrer 125");
        listModel.addElement("AEG Schüler xp");
        
        addRowBT.addActionListener(this);
        delRowBT.addActionListener(this);
        
        setColumnWidth();
    }
    
    public void setSP(SettingsPanel object) {
        this.settings = object;
    }
    public void valueChanged( ListSelectionEvent e ) {
        if(!e.getValueIsAdjusting()) {
            homepageTF.setText(listModel.getElementAt(0).toString());
        }
    }
    public void setColumnWidth() {
        tabelle.getColumnModel().getColumn(0).setPreferredWidth(40);
        tabelle.getColumnModel().getColumn(1).setPreferredWidth(50);
        tabelle.getColumnModel().getColumn(2).setPreferredWidth(100);
        tabelle.getColumnModel().getColumn(3).setPreferredWidth(500);
        tabelle.getColumnModel().getColumn(4).setPreferredWidth(100);
    }
    public void actionPerformed(final ActionEvent e)
    {
        
        if(e.getSource().equals( addRowBT))
        {      	
        	dm.insertRow(tabelle.getSelectedRow()+1, new Object[]{});
        }
        if(e.getSource().equals( delRowBT))
        {      	
        	 dm.removeRow(tabelle.getSelectedRow());
        }
     }
    
    public void mousePressed(MouseEvent e)
    {
    	dm.setValueAt("fff",1,1);
    }
    
}
 

André Uhres

Top Contributor
Code:
           public Component prepareRenderer(TableCellRenderer renderer, int rowIndex, int vColIndex) {
                Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
                /*---------------------------------------------------------------------------*/
                if(isRowSelected(rowIndex)) return c;
                if (rowIndex % 2 == 0 ) {
                    c.setBackground(new Color(245,245,245));
                } else {
                    c.setBackground(getBackground());
                }
                /*----------------------------------------------------------------------------*/
                return c;
            }
EDIT: Das if-else Konstrukt kann man auch kürzer schreiben:
Code:
c.setBackground(rowIndex % 2 == 0?new Color(245,245,245):getBackground());
 

Nuke

Mitglied
André Uhres hat gesagt.:
Code:
           public Component prepareRenderer(TableCellRenderer renderer, int rowIndex, int vColIndex) {
                Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
                /*---------------------------------------------------------------------------*/
                if(isRowSelected(rowIndex)) return c;
                if (rowIndex % 2 == 0 ) {
                    c.setBackground(new Color(245,245,245));
                } else {
                    c.setBackground(getBackground());
                }
                /*----------------------------------------------------------------------------*/
                return c;
            }
EDIT: Das if-else Konstrukt kann man auch kürzer schreiben:
Code:
c.setBackground(rowIndex % 2 == 0?new Color(245,245,245):getBackground());

ja nur das macht es total unleserlich. Ich finde es keine gute idee die syntax von Programmiersprachen immer dahingehend zu verändern, dass ein if/else konstrukt schone keine geschweiften Klammern mehr braucht etc...

Schade dachte schon du hättest etwas zu meinem Problem zu sagen :D
 

André Uhres

Top Contributor
Ich hab das isCellSelected als isRowSelected vorgelagert, das müsste dein Problem eigentlich lösen :wink:
 

Nuke

Mitglied
André Uhres hat gesagt.:
Ich hab das isCellSelected als isRowSelected vorgelagert, das müsste dein Problem eigentlich lösen :wink:
ah sorry gar net gesehen... probiers gleich ...danke wieder was zum spielen :lol:
 

Nuke

Mitglied
Code:
if (rowIndex % 2 == 0 && !isCellSelected(rowIndex,vColIndex))
				{
	                c.setBackground(new Color (245,245,245));
	            }
				else if (rowIndex % 2 == 0)
				{
					c.setBackground(new Color (245,245,245));
				}
				else
				{
	                c.setBackground(new Color (255,255,255));
	            }

meine Lösung die ich soeben rausfand :D
 

André Uhres

Top Contributor
Ja, das unterbindet aber den Standard Selektionshintergrund.
Wenn du das willst, dann mach's doch kürzer:
Code:
               if (rowIndex % 2 == 0) {
                    c.setBackground(new Color(245,245,245));
                } else {
                    c.setBackground(new Color(255,255,255));
                }
:wink:
 

Nuke

Mitglied
André Uhres hat gesagt.:
Ja, das unterbindet aber den Standard Selektionshintergrund.
Wenn du das willst, dann mach's doch kürzer:
Code:
               if (rowIndex % 2 == 0) {
                    c.setBackground(new Color(245,245,245));
                } else {
                    c.setBackground(new Color(255,255,255));
                }
:wink:

ne von wollen war net die Rede eher ich wurde dazu gezwungen :D Habe mich eh schon gewundert, warum ich in meiner jtable keinen durchgehenden dunkelblauen Selektionsbalken habe wenn ich eine Zeile anklicke. Habe immer nur das Rechteck um eine Zelle zu markieren ohne Hintergrundfarbe...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Swing Letzte Zeile einer JTable nicht über RowSorter sotieren AWT, Swing, JavaFX & SWT 2
P Swing Alle Zeilen einer Spalte (jTable) zusammen zählen und in eine eigene Zeile das Ergebnis schreiben. AWT, Swing, JavaFX & SWT 7
S Swing Kopieren einer vollständigen Zeile einer JTable AWT, Swing, JavaFX & SWT 3
Meldanor Swing JTable - Eine neue Zeile vor einer bestehenden Einfügen AWT, Swing, JavaFX & SWT 2
R JTable Hintergrund der Zeile abhängig von Inhalt einer Zelle verändern AWT, Swing, JavaFX & SWT 3
N Farbe einer einzelnen Zeile einer JTable ändern AWT, Swing, JavaFX & SWT 10
R JTable: Zellen einer Zeile zusammenfassen? AWT, Swing, JavaFX & SWT 3
Z JTable automatisch zu einer Zeile scrollen AWT, Swing, JavaFX & SWT 4
D Herausfinden auf welche Zeile in einer JTable geklickt wurde AWT, Swing, JavaFX & SWT 2
S Eine Zeile zu einer JTable hinzufügen wo Zelle selektiert is AWT, Swing, JavaFX & SWT 4
A Zeile in einer JTable einfügen AWT, Swing, JavaFX & SWT 4
F JTable: Selektion einer kompletten Zeile AWT, Swing, JavaFX & SWT 5
G Farbe einer JTable-Zeile von "Außen" ändern AWT, Swing, JavaFX & SWT 2
M Farbe der Umrandung einer ausgwählten Zeile ändern (JTable) AWT, Swing, JavaFX & SWT 3
G JTable! Beim anklicken einer Zeile soll sich Farbe ändern! AWT, Swing, JavaFX & SWT 2
B Zeile einer Tabelle selektieren AWT, Swing, JavaFX & SWT 1
C SWT Wie greife ich auf den Inhalt einer bestimmten Zeile zu? (TableViewer) AWT, Swing, JavaFX & SWT 7
H Swing JComboBox in einer Zeile AWT, Swing, JavaFX & SWT 3
J jTextarea Anzahl Zeichen in einer Zeile begrenzen AWT, Swing, JavaFX & SWT 2
A Aktion beim anklicken einer Zeile in einer Tabelle ausführen AWT, Swing, JavaFX & SWT 4
S JList Bild und Text in einer Zeile AWT, Swing, JavaFX & SWT 2
M Höhe von eines Strings in Pixeln (nicht Höhe einer Zeile) AWT, Swing, JavaFX & SWT 12
T in einer Table soll jede zweite Zeile markiert werden AWT, Swing, JavaFX & SWT 3
M JavaFX TableView nur erste Zeile editable machen und gelb markieren AWT, Swing, JavaFX & SWT 0
F Zeile in mehreren Jtables bei Selektion markieren AWT, Swing, JavaFX & SWT 11
missy72 JavaFX TableRow / RowFactory Zeile einfärben AWT, Swing, JavaFX & SWT 9
T Zelle- und die Zeile-Farbenwechsel bei der Selektion in der Tabelle AWT, Swing, JavaFX & SWT 4
M TableView Zeile hinzufügen AWT, Swing, JavaFX & SWT 5
I JLabel neue Zeile AWT, Swing, JavaFX & SWT 4
B JavaFX TableView eine Zeile markieren AWT, Swing, JavaFX & SWT 5
C SWT Breadcrumb Zeile mit entsprechenden Hyperlinks erstellen AWT, Swing, JavaFX & SWT 0
VfL_Freak Swing Einzelne Zeile in jTable selektieren klappt nicht AWT, Swing, JavaFX & SWT 7
Bluedaishi JTextArea gefundene Zeile nach Oben Scrollen AWT, Swing, JavaFX & SWT 13
T Swing Tabelle mit Button - Anzeigefehler nach Zeile entfernen AWT, Swing, JavaFX & SWT 1
T Swing JTable Zeile mit ausgelesenen Werten mit Hilfe von einem Button hinzufügen AWT, Swing, JavaFX & SWT 1
D JLabel bei Aufruf neue Zeile AWT, Swing, JavaFX & SWT 5
C Button Text in JList neue Zeile AWT, Swing, JavaFX & SWT 6
J Swing JTable Zeile nicht auswählbar machen AWT, Swing, JavaFX & SWT 0
F Swing String[] in JTextArea ausgeben. Jeder Eintrag in neue Zeile, aber ohne "\n"- Geht das? AWT, Swing, JavaFX & SWT 3
N AWT Markierte Zeile jList aus mySQL DB löschen AWT, Swing, JavaFX & SWT 2
J JTable Zeile anklicken und neues Frame öffnen AWT, Swing, JavaFX & SWT 4
S JTable nach aktualisierung - neue Zeile nicht "klickbar" AWT, Swing, JavaFX & SWT 0
M Text Area 1. Zeile oben AWT, Swing, JavaFX & SWT 4
I ausgewählte Zeile mit Hilfe der Tastatur löschen! AWT, Swing, JavaFX & SWT 3
B jTable ganze Zeile anhand eines Kriterium färben AWT, Swing, JavaFX & SWT 6
T JtextPane Zeile aktualisieren AWT, Swing, JavaFX & SWT 3
M JTextArea Zeile hinzufügen AWT, Swing, JavaFX & SWT 4
M Swing JScrollPane (Parent JTextArea) aktualisieren + neue Zeile AWT, Swing, JavaFX & SWT 5
Ollek Swing JTable - Zeile löschen mit AbstractTableModel AWT, Swing, JavaFX & SWT 20
F GroupableTableHeader zeigt nur eine Zeile AWT, Swing, JavaFX & SWT 4
H Unterschiedliche JComboBox je JTable Zeile AWT, Swing, JavaFX & SWT 4
N Swing FileReader Zeile lesen AWT, Swing, JavaFX & SWT 5
F SWT Tabelle Zeile auslesen AWT, Swing, JavaFX & SWT 3
J Swing JTable: Komplette Zeile aber ohne Spalten markieren AWT, Swing, JavaFX & SWT 11
K Zeile verbinden AWT, Swing, JavaFX & SWT 2
G Zeile in JTable durch rechte Maustaste manipulieren AWT, Swing, JavaFX & SWT 4
S Swing AWT-Exception bei JTable mit JComboBox beim Löschen der letzten Zeile AWT, Swing, JavaFX & SWT 3
S Tabelle sortieren, mit Ausnahme der letzten Zeile AWT, Swing, JavaFX & SWT 9
P Aktuelle Zeile in JTextPane farblich hervorheben AWT, Swing, JavaFX & SWT 3
F Zusätzliche Zeile in der GUI AWT, Swing, JavaFX & SWT 4
H Zeile in DefaultTableModel hinzufügen, ProgressBar AWT, Swing, JavaFX & SWT 4
H Markierte Zeile löschen AbstractTableModel AWT, Swing, JavaFX & SWT 10
R Zeile in JTable anhand von Wert einfärben AWT, Swing, JavaFX & SWT 2
M Jframe wie bekommt man bei den zeile einen header erzeugen AWT, Swing, JavaFX & SWT 2
N JTable, Zeile bleibt immer selektiert.... AWT, Swing, JavaFX & SWT 3
Dit_ JTextArea zu Zeile X scrollen AWT, Swing, JavaFX & SWT 4
M [erledigt] Bestimmte Zeile aus JTextArea löschen AWT, Swing, JavaFX & SWT 3
F Swing JTable: Problem beim zeile löschen AWT, Swing, JavaFX & SWT 3
J Swing JList... mehrere Strings in Zeile AWT, Swing, JavaFX & SWT 8
N Methode zum ermitteln der editierte Zeile/Zelle in jTable AWT, Swing, JavaFX & SWT 8
C Mit SelectionListener herausfinden welche zeile in Jtable angeklickt wurde AWT, Swing, JavaFX & SWT 5
E In JTable neue Zeile mit Tabulator einfügen AWT, Swing, JavaFX & SWT 5
M Text in txt-Datei in letzte Zeile schreiben? AWT, Swing, JavaFX & SWT 14
Developer_X Swing text von bestimmter zeile in jtextarea herausbekommen. AWT, Swing, JavaFX & SWT 12
R JTable Zeile löschen AWT, Swing, JavaFX & SWT 4
T MyTableCellRenderer selektiert nicht die ganze Zeile AWT, Swing, JavaFX & SWT 3
R FlowLayout: 1 Objekt pro Zeile AWT, Swing, JavaFX & SWT 5
D eigenes Tablemodel, Zeile löschen ArrayindexOOB excp AWT, Swing, JavaFX & SWT 4
C JTable mit RowSorter und Drag & Drop: Zeile verschieben AWT, Swing, JavaFX & SWT 4
P JTable zeile einfärben AWT, Swing, JavaFX & SWT 1
G Componente Zeile fixieren AWT, Swing, JavaFX & SWT 3
dl85hej bestimmte Zeile anspringen AWT, Swing, JavaFX & SWT 3
S Zeile an eine Tabelle anfügen AWT, Swing, JavaFX & SWT 5
D JTable um eine Zeile erweitern AWT, Swing, JavaFX & SWT 4
P Tabellen in Java - Zeile anhängen AWT, Swing, JavaFX & SWT 19
GilbertGrape JTable - immer leere Zeile AWT, Swing, JavaFX & SWT 6
A JTable zeile auswählen AWT, Swing, JavaFX & SWT 2
A JXTable jede zweite Zeile einfärben AWT, Swing, JavaFX & SWT 4
S in JTable eine Zeile färben AWT, Swing, JavaFX & SWT 5
T JTable ohne Titel in der ersten Zeile AWT, Swing, JavaFX & SWT 2
K leere Zeile zu JTable zufügen AWT, Swing, JavaFX & SWT 2
T jtabel - Zeile selktierbar aber nicht editierbar AWT, Swing, JavaFX & SWT 2
E JTable letzte Zeile in Fett schrift? AWT, Swing, JavaFX & SWT 3
O JTable + event wenn andere Zeile selektiert ist AWT, Swing, JavaFX & SWT 5
O JTable Zeile zuweisen und weiter mit dem Button AWT, Swing, JavaFX & SWT 2
M JTable & Problem, das nicht die komplette Zeile gefärbt AWT, Swing, JavaFX & SWT 6
G JTable erste zeile fixieren wie in excel? AWT, Swing, JavaFX & SWT 3
lolkind eine Zeile und Tabelle ist Rechtsbündig? AWT, Swing, JavaFX & SWT 3
G JTable Zeile zurückgeben AWT, Swing, JavaFX & SWT 4
F JTextPane aktive Zeile AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben