JTable - farbe einer cell/row ändern, Hilfe please

Status
Nicht offen für weitere Antworten.

StarGate29

Neues Mitglied
Hallo Forum,

erstmal vorweg sollte ich erwähnen das ich ein neuling bin was java angeht, deswegen bitte ich um nachsicht :)

Also, ich habe mit NetBeans ein Form-Projekt angelegt und nun darauf aufbauend meine gesamte Funktionen eingebaut. Nun möchte ich gerne anhand vom Textinhalt einer gewissen Spalte(MO/MT) in meinem JTable die gesamte
Reihe(row) in einer anderen Farbe anzeigen lassen. Anhand dessen was ich bisher nachgelesen habe muss ich dazu
den DefaultTableCellRenderer sozusagen customizen. Nur irgendwie scheine ich gerade nix mehr zu kapieren. Ich habe mich nun seit 3 tagen durch so viele Tuts und Foren durchgewühlt das ich nu garnicht mehr durchsteige.
Die derzeitige Variante wie ich den DefaultTableCellRenderer implementiert habe ändert leider garnix im JTable :(

Demnach währe ich für jegliche Hilfe dankbar !!!

Folgend der gesamte Code fürs bessere Verständnis.

Code:
package LogTicker;
/*
 * LogTicker.java
 *
 * Created on 16. März 2005, 20:03
 */


import java.applet.*;
import java.awt.*;
import java.net.*;
import java.io.*;
import java.util.*;
import java.text.*;
import javax.swing.table.*;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.DefaultCellEditor;
import javax.swing.JTextField;
import javax.swing.JTable;

/**
 *
 * @author  stargate
 */

public class LogTicker extends Applet {
    
    public Socket mysock;
    public BufferedReader inbuffer;
    public PrintWriter outbuffer;
    
    // Global String for our ServiceID
    public String SessionID;
    public String AppB;
    public int AppBreite;
    
    public boolean OnlyMO;
    public boolean OnlyMT;
    
    public long TimerIDX;
    
    public class Task extends TimerTask {
        
        public void run() {
        try {
         
         // Define Objects for reading and writing to the Socket
         inbuffer = new BufferedReader (new InputStreamReader(mysock.getInputStream()));
         outbuffer = new PrintWriter(mysock.getOutputStream(),true);
         
                 
         if(TimerIDX == 0){
          String sendstring1 = "GET /livetickserver.cgi HTTP/1.0";
          String sendstring2 = "Cookie: SID=" + SessionID;
          outbuffer.println(sendstring1);
          outbuffer.println(sendstring2);
          outbuffer.println("");
         }
         

         
         // Get a Line from our Server
         String myData = null;
         myData = inbuffer.readLine();
         
         if(myData == "--") {
           mysock.close();
           TimerIDX = 0;
           try {
             mysock = new Socket("127.0.0.1", 80);
             mysock.setKeepAlive(true);
             } catch (IOException e){
              System.out.println("Found Error: " + e); 
             }
           return;
         }
         // If the Server replys nothing(null) return to timer
//         while(myData == null){
//             myData = inbuffer.readLine();
//             System.out.println("Got from Server => " + myData);
//         }
         
         if(myData == null){
             return;
         }
         
         TimerIDX = 1;
         // Define some Variables
         String Datum,Art,Typ,HdNr,Text;
         
         // Check if we have a MO or MT
         if(myData.startsWith("0")){
             Art = "MO";
             if(OnlyMO == true){
                 return;
             }
         } else if(myData.startsWith("1")){
             Art = "MT";
             if(OnlyMT == true){
                 return;
             }
         } else { return; }
         
/*         // Get Date
         Calendar cal = new GregorianCalendar( TimeZone.getTimeZone("ECT") );
         TimerIDX = cal.getTimeInMillis();
         SimpleDateFormat formater = new SimpleDateFormat();
         Datum = formater.format( cal.getTime() ); // 02.03.03 23:41
 */        
         // Split the Line from Server into Strings, seperated by a percent-letter
         String HandyNr[] = myData.split("%");
         
         // Check if we have an MO or MT
         if(Art == "MO"){
             Datum = HandyNr[1];
             HdNr = HandyNr[4];
             Text = HandyNr[5];
         } else {
             Datum = HandyNr[1];
             HdNr = HandyNr[HandyNr.length-2];
             Text = HandyNr[HandyNr.length-1];
         }
         
         // Add a Row to our Table
         Vector data = new Vector();
         data.addElement(Datum);
         data.addElement(Art);
         data.addElement(HdNr);
         data.addElement(Text);
         DefaultTableModel tableModel =(DefaultTableModel) jTable1.getModel();
         
         if(jTable1.getRowCount() > 14){
          for(int i=0;i < jTable1.getRowCount();i++){
           tableModel.removeRow(i);    
          }
          tableModel.fireTableDataChanged();
         }
         tableModel.addRow(data);
        } catch (IOException e){
            System.out.println("Found Error: " + e); 
         }
        }
     }
        
    public void setColumnWidth(int pColumn, int pWidth){
            //Get the column model.
            TableColumnModel colModel = jTable1.getColumnModel();
            //Get the column at index pColumn, and set its preferred width.
                colModel.getColumn(pColumn).setMinWidth(pWidth);
                colModel.getColumn(pColumn).setMaxWidth(pWidth);
                colModel.getColumn(pColumn).setPreferredWidth(pWidth);
                jTable1.invalidate();
                jFrame1.invalidate();
                jFrame1.validate();
                jFrame1.repaint();
      }
    
    /** Initializes the applet LogTicker */
    public void init() {
        
        SessionID = getParameter("SID");
        AppB = getParameter("WIDTH");
        
        System.out.println("Vor:" + AppB);
        AppBreite = Integer.parseInt( AppB );
        System.out.println("Nach: " + AppBreite);
        
        try {
         mysock = new Socket("127.0.0.1", 80);
         mysock.setKeepAlive(true);
         } catch (IOException e){
            System.out.println("Found Error: " + e); 
        }
       initComponents();
       
       TableCellRenderer MyRenderer = new MyRender();
       jTable1.setDefaultRenderer(Integer.class, MyRenderer);
       
       setColumnWidth(1, 30);
       setColumnWidth(0, 60);
       setColumnWidth(2, 150);
       
       jFrame1.setResizable(true);
       
       Timer timer1 = new Timer();
       timer1.schedule(new Task(), 1000, 1000);
    }
    
    
    public class MyRender extends JTable implements TableCellRenderer {
        
        public Component getTableCellRendererComponent(
                         JTable table, Object value,
                         boolean isSelected, boolean hasFocus,
                         int row, int column){
            
          
          if(table.getModel().getValueAt(row , 1 ).equals("MO")){
              table.setForeground(Color.BLUE);
          }
          else
          { 
              table.setForeground(Color.RED);
          }
          return this;
        }     
    }
    
    /** This method is called from within the init() method to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    private void initComponents() {
        jFrame1 = new javax.swing.JFrame();
        jPanel1 = new javax.swing.JPanel();
        jCheckBox1 = new javax.swing.JCheckBox();
        jCheckBox2 = new javax.swing.JCheckBox();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();

        setLayout(new java.awt.BorderLayout());

        setName("LogTicker");
        jPanel1.setLayout(null);

        jPanel1.setAutoscrolls(true);
        jPanel1.setMinimumSize(new java.awt.Dimension(750, 300));
        jPanel1.setPreferredSize(new java.awt.Dimension(AppBreite - 2, 320));
        jCheckBox1.setToolTipText("Beim Anhacken werden nur MOs Angezeigt");
        jCheckBox1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jCheckBox1.setLabel("Nur MOs");
        jCheckBox1.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                jCheckBox1ItemStateChanged(evt);
            }
        });

        jPanel1.add(jCheckBox1);
        jCheckBox1.setBounds(300, 0, 80, 23);

        jCheckBox2.setToolTipText("Beim Anhacken werden nur MTs Angezeigt");
        jCheckBox2.setLabel("Nur MTs");
        jCheckBox2.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                jCheckBox2ItemStateChanged(evt);
            }
        });

        jPanel1.add(jCheckBox2);
        jCheckBox2.setBounds(400, 0, 90, 23);

        jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        jScrollPane1.setVerticalScrollBarPolicy(javax.swing.JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        jScrollPane1.setAutoscrolls(true);
        jScrollPane1.setMinimumSize(new java.awt.Dimension(750, 300));
        jScrollPane1.setPreferredSize(new java.awt.Dimension(AppBreite, 300));
        jScrollPane1.setWheelScrollingEnabled(false);
        jFrame1.setDefaultLookAndFeelDecorated(true);

        jTable1.setBorder(new javax.swing.border.EtchedBorder(javax.swing.border.EtchedBorder.RAISED));
        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Zeit", "Typ", "Kunde", "Text"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jTable1.setToolTipText("Anzeige der Nachrichten");
        jTable1.setAutoCreateColumnsFromModel(false);
        jTable1.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
        jTable1.setMaximumSize(new java.awt.Dimension(32767, 32767));
        jTable1.setMinimumSize(new java.awt.Dimension(750, 300));
        jTable1.setPreferredSize(new java.awt.Dimension(AppBreite, 300));
        jTable1.setRowHeight(14);
        jTable1.setRowMargin(2);
        jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jTable1MouseClicked(evt);
            }
        });

        jScrollPane1.setViewportView(jTable1);
        jTable1.getAccessibleContext().setAccessibleParent(jScrollPane1);

        jPanel1.add(jScrollPane1);
        jScrollPane1.setBounds(0, 30, 470, 420);

        add(jPanel1, java.awt.BorderLayout.CENTER);

    }

    private void jCheckBox2ItemStateChanged(java.awt.event.ItemEvent evt) {                                            
        if(jCheckBox2.isSelected()){
            OnlyMO = true;
        } else {
            OnlyMO = false;
        }        // TODO add your handling code here:
    }                                           

    private void jCheckBox1ItemStateChanged(java.awt.event.ItemEvent evt) {                                            
        if(jCheckBox1.isSelected()){
            OnlyMT = true;
        } else {
            OnlyMT = false;
        }
    }                                           

    private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {                                     
        int RowIndex = jTable1.getSelectedRow();
        Object data = jTable1.getValueAt(RowIndex, 2);
        try
        {
         URL url = new URL("http://127.0.0.1/adm_showhist.cgi?Nr=" + data);
         getAppletContext().showDocument(url,"showhist");
        }  catch(Exception e){
             System.out.println(e);
        } 
    }                                    
    
    
    // Variables declaration - do not modify
    private javax.swing.JCheckBox jCheckBox1;
    private javax.swing.JCheckBox jCheckBox2;
    private javax.swing.JFrame jFrame1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    public javax.swing.JTable jTable1;
    // End of variables declaration
    
}
 
B

Beni

Gast
Wenn Du ein Anfänger bist, dann fang auch mit was einfachem an... :wink:

Lies mal das hier.

Apropos Table, wir haben da auch noch was: hier. Die Beispiele dort funktionieren garantiert, probier doch einfach mal ein bisschen aus, damit du das Table besser verstehst (dein aktueller Code sieht doch sehr "zusammenkopiert" aus.)
 

StarGate29

Neues Mitglied
Vielen Dank Beni,

der Tip mit dem JTable Tutorial hats total gebracht...nu ist mir einiges klarer und meine Bunten Rows funktionieren nu auch wunderbar !

Nochmal vielen vielen dank


StarGate29
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Welche Farbe hat die Auswahl in einer JTable? AWT, Swing, JavaFX & SWT 2
N Farbe einer einzelnen Zeile einer JTable ändern AWT, Swing, JavaFX & SWT 10
O Hgr- Farbe einer JTable ändert sich nicht AWT, Swing, JavaFX & SWT 11
N Die Zeile einer JTable verändert beim klicken ihre Farbe? AWT, Swing, JavaFX & SWT 7
G Farbe einer JTable-Zeile von "Außen" ändern AWT, Swing, JavaFX & SWT 2
S Farbe einer Zelle in JTable ändern AWT, Swing, JavaFX & SWT 13
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
T JTable Zellen Farbe AWT, Swing, JavaFX & SWT 13
D Swing JTable, Zellen-Farbe über Koordinaten ändern AWT, Swing, JavaFX & SWT 9
G JTable Zeile mit Farbe füllen AWT, Swing, JavaFX & SWT 2
J Cell Farbe in JTable AWT, Swing, JavaFX & SWT 31
D Im JTable bei einzelnen Zellen die Farbe ändern AWT, Swing, JavaFX & SWT 3
K Farbverlauf -> Farbe auswählen mit Regler || JTable Selec AWT, Swing, JavaFX & SWT 5
M JTable und Farbe von Zellen AWT, Swing, JavaFX & SWT 2
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
S HPRO und UPRO gemeinsame JTABLE gemeinsamer RENDERER ? AWT, Swing, JavaFX & SWT 1
F Swing JTable - MultiHeader inkl. Eingabemöglichkeit AWT, Swing, JavaFX & SWT 1
S JTable - Feldinhalte anzeigen AWT, Swing, JavaFX & SWT 15
D Swing JTable Spaltenbreite AWT, Swing, JavaFX & SWT 1
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
G jTable - getSelectedRow() AWT, Swing, JavaFX & SWT 3
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
D Tastaturabfragen CTRL+t, CTRL+E bei eine JTable, bestehend aus JTextAteas AWT, Swing, JavaFX & SWT 4
P Checkboxes in JTable nicht editable AWT, Swing, JavaFX & SWT 9
F Best-Practise: JTable Text in Zelle zu groß AWT, Swing, JavaFX & SWT 2
izoards JTable in CSV File schreiben... AWT, Swing, JavaFX & SWT 23
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
I JTable, DefaultTableModel, zwei Zahlen multiplizieren. AWT, Swing, JavaFX & SWT 26
M JTABLE / wie oft wurde gewürfelt. AWT, Swing, JavaFX & SWT 1
F JTable vergrößern AWT, Swing, JavaFX & SWT 2
H JTable: Diverse NullPointer-Exceptions zur Laufzeit AWT, Swing, JavaFX & SWT 3
J Swing Werte des JTable werden nicht angezeigt AWT, Swing, JavaFX & SWT 9
T Swing JTable cellRenderer mit jpg Hintergrundfarbe lässt sich nicht ändern. AWT, Swing, JavaFX & SWT 1
HoT Einzelne Zelle in JTable Rahmen unten setzen AWT, Swing, JavaFX & SWT 24
B JTable Zellen zusammenfügen AWT, Swing, JavaFX & SWT 3
M Swing Cell Renderer für Zeilenumbruch in JTable AWT, Swing, JavaFX & SWT 0
H JTable im JSplitPane darstellen AWT, Swing, JavaFX & SWT 2
MadMax2506 Swing JTable lädt sehr lange AWT, Swing, JavaFX & SWT 1
D Zeilenumbruch in einer JTable AWT, Swing, JavaFX & SWT 9
R Swing JTable und Spaltenausrichtung AWT, Swing, JavaFX & SWT 8
G JTable füllen AWT, Swing, JavaFX & SWT 1
H JTable TableCellEditor-Problem AWT, Swing, JavaFX & SWT 0
W Swing JTable Zeilenumbruch innerhalb einer Zelle AWT, Swing, JavaFX & SWT 3
J Datensatz in jTable ausgeben AWT, Swing, JavaFX & SWT 3
M Swing Automatischer Editorstart in JTable-Zelle AWT, Swing, JavaFX & SWT 5
ralfb1105 Swing JTable aktualisieren AWT, Swing, JavaFX & SWT 5
adiko01 JTable: Nur markierte Zeilen aus der Tabelle in CSV exportiern AWT, Swing, JavaFX & SWT 9
M JTable.setDefaultRenderer(...) greift nicht AWT, Swing, JavaFX & SWT 0
J JTable: Eingabe in Tabellenzelle korrigieren AWT, Swing, JavaFX & SWT 4
T Problem mit JTable Sortierung AWT, Swing, JavaFX & SWT 2
D JTable nach INSERT aktualisieren /refreshen AWT, Swing, JavaFX & SWT 1
D MySQL Daten in JTable anzeigen AWT, Swing, JavaFX & SWT 2
H Swing Jtable extra spalte AWT, Swing, JavaFX & SWT 6
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
S Swing Mal wieder JTable Ansicht aktualisieren AWT, Swing, JavaFX & SWT 10
A JTable mit Daten füllen AWT, Swing, JavaFX & SWT 1
VfL_Freak Swing Einzelne Zeile in jTable selektieren klappt nicht AWT, Swing, JavaFX & SWT 7
N AWT jTable CellRenderer AWT, Swing, JavaFX & SWT 6
T Swing JTable valueChanged datensatz löschen AWT, Swing, JavaFX & SWT 1
0 Swing JTable aus anderer Klasse updaten AWT, Swing, JavaFX & SWT 5
S Jtable defaultRenderer wohin damit ? AWT, Swing, JavaFX & SWT 23
T Swing JTable / FocusListener AWT, Swing, JavaFX & SWT 0
it_is_all Warum wird die JTable im JDialog nicht angezeigt? AWT, Swing, JavaFX & SWT 1
L Swing JTable im Panel darstellen AWT, Swing, JavaFX & SWT 8
T Swing Double Click bei Buttons in JTable AWT, Swing, JavaFX & SWT 9
J addRow bei JTable AWT, Swing, JavaFX & SWT 6
M Jtable gibt -1 wert bei selectedRow und Column AWT, Swing, JavaFX & SWT 3
Meeresgott Swing JTable AWT, Swing, JavaFX & SWT 4
J JTable Selection Listener funktioniert nicht AWT, Swing, JavaFX & SWT 4
C Swing Daten in JTable wiedergeben per TableModel und MVC Pattern AWT, Swing, JavaFX & SWT 16
Z Swing Drag&Drop zwischen JTable und JTree AWT, Swing, JavaFX & SWT 4
Thallius JTable dynamisch Spaltenanzahl verändern AWT, Swing, JavaFX & SWT 2
Thallius JTable dynamisch laden? AWT, Swing, JavaFX & SWT 2
B Swing JTable sortieren AWT, Swing, JavaFX & SWT 2
T Swing JTable auslesen und befüllen AWT, Swing, JavaFX & SWT 8
B JTable wird nicht angezeigt AWT, Swing, JavaFX & SWT 1
J JTable und Suchlogik AWT, Swing, JavaFX & SWT 4
Viktim Swing JTable mit Tab verlassen AWT, Swing, JavaFX & SWT 1
F Swing Spaltenbreite einer Column eines JTable auslesen AWT, Swing, JavaFX & SWT 5
Viktim Swing JTable Mit Tab druch Zeilen Wechseln AWT, Swing, JavaFX & SWT 5
Thallius Warum refrehsed mein JTable nicht? AWT, Swing, JavaFX & SWT 5
Ghostman1711 Hinzufügen ausgewählter Dateinen des Filechoosers zu einem JTable AWT, Swing, JavaFX & SWT 9
S Swing JTable - Einzelne Rows einfärben AWT, Swing, JavaFX & SWT 11
M Wert einer Zelle aus JTable ziehen AWT, Swing, JavaFX & SWT 4
K JTable getValueAt() klappt nicht immer AWT, Swing, JavaFX & SWT 1
K JTable in extra Klasse, Zugriff in einer anderen klasse nicht möglich AWT, Swing, JavaFX & SWT 26
B Swing Tabelle(JTable) filtern swing GUI AWT, Swing, JavaFX & SWT 3
P JTable - bei Eingabe Selektion AWT, Swing, JavaFX & SWT 0
P Fokus auf Zelle in JTable AWT, Swing, JavaFX & SWT 1
S Swing Deselektion in JTable verhindern AWT, Swing, JavaFX & SWT 0
D Problem mit JTable AWT, Swing, JavaFX & SWT 1
N Swing Print JTable mit AbstractTableModel AWT, Swing, JavaFX & SWT 1
Ananaskirsche Swing jTable Reihen zuviel eingefügt AWT, Swing, JavaFX & SWT 12
P im JTable die Schriftfarbe ändern AWT, Swing, JavaFX & SWT 19
T Swing JTable wird nicht angezeigt AWT, Swing, JavaFX & SWT 4
S Dreiecke in bestimmte Zellen einer JTable AWT, Swing, JavaFX & SWT 9
LexeB4F Zelle in JTable gezielt einfärben AWT, Swing, JavaFX & SWT 4
LexeB4F JTable mehrere Zelle selektieren und inhalte Löschen.. Ideen gesucht AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben