Swing jTable verändern

Johnny919

Aktives Mitglied
hey ich habe 2 fragen/probleme
1. gibt es eine möglichkeit jede 2 spalte einer jTable grau zu färben ohne dabei den DefaultCellRenderer zu überschreiben ( weil sonst alle anderen einstellung die ich gemacht habe iwie wegfallen )
2. hat einer von euch vllt eine brauchbarere möglichkeit eine table sortierbar zu machen d.h. wenn ich oben auf die colum überschrift drücke das das dann auf oder absteiugend sortiert wird ..... so wie das bei den meisten tabellen halt ist ......(hab nähmlich im inet nur sachen gefunden die entweder nicht gingen oder die ich nicht auf meine tabelle übertragen konnte .....warscheinlich auch aus doofheit aber naje fragen kostet ja nichts )

schonmal danke im vorraus Gruß John
 

Illuvatar

Top Contributor
1. Wenn du das mit dem Überschreiben richtig machst, sollte da eigentlich nichts wegfallen. Schau mal hier den Punkt 2 an:
http://www.java-forum.org/java-faq-beitraege/7032-jtable-teil-4-darstellung-daten.html
Erb von DefaultTableCellRenderer und ruf super.getTableCellRendererComponent auf, dann müsste alles klappen.

2.
To enable sorting and filtering of rows, use a RowSorter. You can set up a row sorter in either of two ways:
Directly set the RowSorter. For example: table.setRowSorter(new TableRowSorter(model)).
Set the autoCreateRowSorter property to true, so that the JTable creates a RowSorter for you. For example: setAutoCreateRowSorter(true).
http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/api/javax/swing/JTable.html
 

Johnny919

Aktives Mitglied
ok ich versuche mich erstmal an 2. also muss ich einfach :
Java:
jTableProcess.setRowSorter(RowSorter<? extends jTableProcessModel> sorter);
der tabelle einen RowSorter setzten ??
und wie mache ich mir einen rowsorter und wie sag ich ihm was genau er machen soll ??????:L
sorry steh grade megga auf dem schlauch glaube ich
 

Johnny919

Aktives Mitglied
perfekt das mit dem autosorter ist genau das was ich wollte :applaus:
nur iwie stört der sich noch dran das man die reichen nach rechts und links bewegen kann das muss ich noch ändern iwie !!
naja setzt mich jetzt an der Cellrenderer
 

Johnny919

Aktives Mitglied
hmmmm neja oder auch nicht muss denn sorter doch selber schreiben da er nur Strings sortiert bei zahlen macht er das iwie nicht :(

mal ne frage zu den CellRenderer also das mache ich :
Java:
jTableProcess.setDefaultRenderer( Color.class, new ColorTableCellRenderer() );
und hier ist der ColorCell...:
Java:
class ColorTableCellRenderer extends DefaultTableCellRenderer{
	private static final long serialVersionUID = 1L;

	public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        
        Color color;
        System.out.println(row);
        if(row%2==0){
        	color = new java.awt.Color(214,217,224);
        }else{
        	color = Color.white;
        }
        setForeground( color );
        
        return this;
    }
}
aber iwie geht der da niee rein hab ich iwas übersehen und ist das was ich im colorCell.... mache richtig ??
 

Illuvatar

Top Contributor
hmmmm neja oder auch nicht muss denn sorter doch selber schreiben da er nur Strings sortiert bei zahlen macht er das iwie nicht :(
Was heißt Zahlen? Was für Objekte sind das? Bei Integer-Objekten sollte alles funktionieren, denn die implementieren Comparable. Bei eigenen Objekten musst du eben selbst Comparable implementiereren.

Und den RowSorter musst du bestimmt nicht selbst schreiben, höchstnes einen Comparator, den du dem RowSorter übergeben kannst (falls das oben nich funktioniert).

mal ne frage zu den CellRenderer also das mache ich :
Java:
jTableProcess.setDefaultRenderer( Color.class, new ColorTableCellRenderer() );

Der Rest sieht gut aus, aber wieso machst du da
Code:
Color.class
? Das bewirkt, dass der Renderer nur da eingesetzt wird, wo Color-Objekte in der Tabelle sind.
 

Johnny919

Aktives Mitglied
eigentlich sind das ints aber iwie will er das auch mit dem selbstgeschriebenen nicht sortieren er sortiert die nach eingang also so wie das model erstellt wurde nicht aber nach größe !!

wie sieht das aus das ich das ausschlate das man die reichen in der reichenfolge verschieben kann finde in keinen tut was dazu !!

UPS ............da ist wieder mein schlauch auf dem ich stehe ^^;( und was muss ich da rein schreiben das der da immer rein soll ??
 

Illuvatar

Top Contributor
Vielleicht hilft dir das Beispiel:

[Java]import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;

public class JTableExample {
public static void main(String[] args) {
TableModel model = new DefaultTableModel( new Object[][] {
{ "alpha", 42 },
{ "beta", 3 },
{ "gamma", 987 },
{ "delta", -2 },
{ "epsilon", 9000 }
}, new Object[] {
"Strings", "ints"
});
JTable table = new JTable(model);

table.setAutoCreateRowSorter(true);
table.getTableHeader().setReorderingAllowed(false);
table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer (){
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if(row%2==0){
setBackground (new java.awt.Color(214,217,224));
}else{
setBackground (Color.white);
}
return this;
}
});

JFrame frame = new JFrame("Table");
frame.add(new JScrollPane(table));
frame.pack();
frame.setLocationByPlatform(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}[/Java]
 

Johnny919

Aktives Mitglied
Ja dan hat gehollfen danke ....eine sache ist aber nocht
also hab durch dein beispiel meinen fehler gefunden undzwar so mache ich mein model:
Java:
List<Process> processes = new ArrayList<Process>();
		pros = new ProcessService();
		processes = pros.getProzessList();
		Process process = new Process();
		String model[][] = new String[processes.size()][6];
		for(int i = 0; i<processes.size();i++){
			process = processes.get(i);
			model[i][0]=process.getName();
			model[i][1]=Integer.toString(process.getPid());
			model[i][2]=process.getSessionname();
			model[i][3]=Integer.toString(process.getSession());
			model[i][4]=process.getMemusage();
		}
		jTableProcessModel = 
			new DefaultTableModel(model,
					new String[] { "Anzeigename", "PID", "Sitzungsname", "Sitz.Nr.", "Arbeitsspeicher" });
		jTableProcess.setModel(jTableProcessModel);
da ich die werte zuerst in ein String array reinpacke sind die ints auch keine ints mehr deswegen sortiert er sie nach 0,1,2,3,4 und so weiter achtet nicht aber drauf ob das 20 , 100, oder 1000000 sind weils ja strings sind aber wiei was ich grade nicht wie ich das machen soll ohene das ich die ins in string mache weil wenn ich den model array als Object array mache dann hat der iwie probleme da die int werte hinzuzufügen wiso auch immer
nochmal hilfe bitte^^
 

Johnny919

Aktives Mitglied
das bringt recht wenigt weil es einfach die falsche variante ist von dem was ich schon mache mit Integer.toSTring
meine frage war eher welche typ muss der array sein das ich da strings wie auch ints reinpacken kann ohne sie umzuwandeln!!
 

Johnny919

Aktives Mitglied
Vielleicht hilft dir das Beispiel:

[Java]import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;

public class JTableExample {
public static void main(String[] args) {
TableModel model = new DefaultTableModel( new Object[][] {
{ "alpha", 42 },
{ "beta", 3 },
{ "gamma", 987 },
{ "delta", -2 },
{ "epsilon", 9000 }
}, new Object[] {
"Strings", "ints"
});
JTable table = new JTable(model);

table.setAutoCreateRowSorter(true);
table.getTableHeader().setReorderingAllowed(false);
table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer (){
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if(row%2==0){
setBackground (new java.awt.Color(214,217,224));
}else{
setBackground (Color.white);
}
return this;
}
});

JFrame frame = new JFrame("Table");
frame.add(new JScrollPane(table));
frame.pack();
frame.setLocationByPlatform(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}[/Java]

bin grade am verzweifeln und hab mir dein beispiel auch genau angeguckt aber hast du bemerkt das das auch nicht richtig geht ?
wenn du die zaheln sortiertst sagt er dir das 9000 < 987 ist und das ist iwie auch nicht richtig.
naja iwelche anderen Vorschläge oder verbesserungen ??
 

ymene

Bekanntes Mitglied
Dein TableModel weiß nicht, was für eine Klasse sich in ihren Zellen befindet und sortiert daher immer nach der toString Methode von Object. Daher musst du die Methode getColumnClass überschreiben. Hier mal ein typisches Beispiel (dein Beispiel etwas erweitert).

Java:
import java.awt.Color;
import java.awt.Component;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;

public class JTableExample
{
  public JTableExample()
  {
    JTable table = new JTable( new MyTableModel() );

    table.setAutoCreateRowSorter( true );
    table.getTableHeader().setReorderingAllowed( false );
    table.setDefaultRenderer( Object.class, new DefaultTableCellRenderer()
    {
      public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected,
                                                      boolean hasFocus, int row, int column )
      {
        super.getTableCellRendererComponent( table, value, isSelected, hasFocus, row, column );
        if ( row % 2 == 0 )
        {
          setBackground( new java.awt.Color( 214, 217, 224 ) );
        }
        else
        {
          setBackground( Color.white );
        }
        return this;
      }
    } );

    JFrame frame = new JFrame( "Table" );
    frame.add( new JScrollPane( table ) );
    frame.pack();
    frame.setLocationByPlatform( true );
    frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    frame.setVisible( true );
  }



  class MyTableModel extends AbstractTableModel
  {
    private String[]   columnNames = { "String", "Integer" };
    private Object[][] data        =
                                       { { "alpha", 42 }, { "beta", 3 }, { "gamma", 987 }, { "delta", -2 },
                                           { "epsilon", 9000 } };


    public int getColumnCount()
    {
      return columnNames.length;
    }

    public int getRowCount()
    {
      return data.length;
    }

    @Override
    public String getColumnName( int col )
    {
      return columnNames[ col ];
    }

    public Object getValueAt( int row, int col )
    {
      return data[ row ][ col ];
    }

    @Override
    public Class getColumnClass( int c )
    {
      if ( getValueAt( 0, c ) == null )
        return Object.class;
      return getValueAt( 0, c ).getClass();
    }

    @Override
    public boolean isCellEditable( int row, int col )
    {
      return true;
    }

    @Override
    public void setValueAt( Object value, int row, int col )
    {
      data[ row ][ col ] = value;
      fireTableCellUpdated( row, col );
    }
  }

  public static void main( String[] args )
  {
    new JTableExample();
  }
}
 

Johnny919

Aktives Mitglied
Perfekt funktionier alles wie gewollte nur ne kleine bitte habe ich noch was ist wenn ich eine spalte habe wo ints stehen und am ende eine string z.b. 2998 K .
Dann wird der ganze Zelleninhalt ja zum String oder ?
Auf jedenfall sortiert es es wie ein String ?
Was für ne möglichkeit bleibt mir das die Int auch Alts ints angesehen werden obwohl da ein string hinter steht ??
 

ymene

Bekanntes Mitglied
Die erste Möglichkeit die mir dazu einfällt ist, dass du dir nen eigenes Objekt bauen musst, dass aus einem zusammengesetzten Integer und einem String besteht. Dieses Objekt muss dann Comparable implementieren. Dieses Comparable ignoriert den Stringteil und vergleicht einfach nur den Integerwert mit dem anderen Objekt.

Natürlich bräuchtest du dann auch einen entsprechenden CellEditor, der bei Editieren des Inhaltes wirklich immer ein solches Objekt erstellt und nicht daraus wie in deinem Fall wieder einen String macht.
 

Johnny919

Aktives Mitglied
ich versteh zwar wie du das machen würdenst ...aber ich glaueb iwie weis ich nicht wie ich das machen soll :(
hast jemand vllt einen ähnichen sachverhalt denn er mir zeigen könnte denn ich dann auch mich anpassen kann ??
 
Zuletzt bearbeitet:

jgh

Top Contributor
also für den Teil mit dem Comparator mal ein kleines Beispiel...:

Java:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class IntegerUndString {
	
	public static void main(String[] args){
		ArrayList<IntegerUndString> eineListe = new ArrayList<IntegerUndString>();
		eineListe.add(new IntegerUndString("was auch immer ",3123));
		eineListe.add(new IntegerUndString("du hier initialisieren ",10815));
		eineListe.add(new IntegerUndString(-7));
		eineListe.add(new IntegerUndString("mmmh"));
		eineListe.add(new IntegerUndString("2423mal eine Zahl als String",4));
		
		Collections.sort(eineListe, new IntegerUndStringComperator());
		for(IntegerUndString iUs: eineListe){
			System.out.println(iUs.getEinInt() + " " + iUs.getString());
		}
	}

	private String string;
	private int einInt;

	public IntegerUndString() {
		string="";
	}

	public IntegerUndString(int einInt) {
		this.einInt = einInt;
		string = "";
	}

	public IntegerUndString(String string, int einInt) {
		this.einInt = einInt;
		this.string = string;
	}

	public IntegerUndString(String string) {
		this.string = string;
	}

	public String getString() {
		return string;
	}

	public void setString(String string) {
		this.string = string;
	}

	public int getEinInt() {
		return einInt;
	}

	public void setEinInt(int einInt) {
		this.einInt = einInt;
	}

}

class IntegerUndStringComperator implements Comparator<IntegerUndString> {

	@Override
	public int compare(IntegerUndString arg0, IntegerUndString arg1) {
		if (arg0.getEinInt() > arg1.getEinInt()) {
			return 1;
		} else if (arg0.getEinInt() < arg1.getEinInt()) {
			return -1;
		} else
			return 0;
	}
}
 

dirk1970

Mitglied
bzw. mit Comparable

Java:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
 
public class IntegerUndString implements Comparable<IntegerUndString>{
    
   
 
    private String string;
    private int einInt;
 
    public IntegerUndString() {
        string="";
    }
 
    public IntegerUndString(int einInt) {
        this.einInt = einInt;
        string = "";
    }
 
    public IntegerUndString(String string, int einInt) {
        this.einInt = einInt;
        this.string = string;
    }
 
    public IntegerUndString(String string) {
        this.string = string;
    }
 
    public String getString() {
        return string;
    }
 
    public void setString(String string) {
        this.string = string;
    }
 
    public int getEinInt() {
        return einInt;
    }
 
    public void setEinInt(int einInt) {
        this.einInt = einInt;
    }

	@Override
	public int compareTo(IntegerUndString o) {
		 if (getEinInt() > o.getEinInt()) {
	            return 1;
	        } else if (getEinInt() < o.getEinInt()) {
	            return -1;
	        } else
	            return 0;
	    }
	
 
}

im forum gibt es übrigends unter http://www.java-forum.org/java-faq-beitraege/39070-jtable-teil-8-sortieren.html
etwas zu dem thema
 

Johnny919

Aktives Mitglied
:applaus: funktioniert alles einwandfrei danke :applaus:
hab aber noch leider 3 kleine fragen !!
1. ist es mäglich die Farbe der Vertikalen linen zu ändern ? wenn ja wie ich hab schon alles probiert !!
2. ist es mir möglich in verschiedenen Spalten verschiedene ausrichtungen zu machen ? wenn ja wie ??
3. wie ändere ich den Selection lisener das der farbenmäsig so aus sieht wie beim taskmanager ?
3.1 und wie mache ich das er nicht auch relece sonder auch press selectiert ??
3.2 wie mache ich so eine art vorselectierung mache wenn ich mit der maus über die tabele gehe ?
(wenn ich mich unverständlich ausgedrückt habe eigentlich will ich das so haben wie das beim windows taskmanager ausieht )
schonmal viel danke und nochmal danke für die schon erhalltene tolle Hilfe
 

Michael...

Top Contributor
1. ist es mäglich die Farbe der Vertikalen linen zu ändern ? wenn ja wie ich hab schon alles probiert !!
willst Du für die horizontalen und vertikalen Gitterlinien unterschiedliche Farben? Das geht nicht.
Du könntest die vertikalen Linien deaktivieren und per CellRenderer in der Vertikalen eine farbige Border setzen.
2. ist es mir möglich in verschiedenen Spalten verschiedene ausrichtungen zu machen ? wenn ja wie ??
Ja, z.B. per CellRenderer
3. wie ändere ich den Selection lisener das der farbenmäsig so aus sieht wie beim taskmanager ?
Der SelectionListener sieht nicht aus ;-) Die Frage soll wohl lauten: Wie änderer ich die Darstellung der Selektion einer JTable? Anwort: per CellRenderer oder per JTable#setSelectionBackground(Color color) oder für die komplette Applikation ein anderes LaF setzen (z.B das Look and Feel des Systems)
3.1 und wie mache ich das er nicht auch relece sonder auch press selectiert ??
die Frage verstehe ich nicht
3.2 wie mache ich so eine art vorselectierung mache wenn ich mit der maus über die tabele gehe ?
Was verstehst Du unter Vorselektion? Man könnte per MouseMotionListener die Zeile beim überfahren selektieren. Eine Hervorhebung sobald die Maus über der Zeile ist könnte man mittels CellRenderer machen - kann aber ganz schon knifflig werden.
(wenn ich mich unverständlich ausgedrückt habe eigentlich will ich das so haben wie das beim windows taskmanager ausieht )
Beim mir hat der Taskmanager gar keine Gitterlinien, also könnte man das komplette Gitter deaktivieren.
Dann könnte man ein Blau als Selektionshintergrund und ein Weiss als Selektionhintergrund nehmen. Damit wäre man meinem Taskmanager schon ziemlich nahe.
 

dirk1970

Mitglied
die meisten fragen wurden ja schon beantwortet
bleibt für michnur noch:

3.1 und wie mache ich das er nicht auch relece sonder auch press selectiert ??
ich denke Du meinst, dass er nicht erst bei release sondern schon bei Mouse press selektiert?

da kannst Du einen eigenen Mouselistener an der Tabelle anmelden und dann in der Methode für MousePress mittels setSelection (genau Signatur der Methode musst Du in der API nachsehen) die Zeile selektieren
 

Johnny919

Aktives Mitglied
willst Du für die horizontalen und vertikalen Gitterlinien unterschiedliche Farben? Das geht nicht.
Du könntest die vertikalen Linien deaktivieren und per CellRenderer in der Vertikalen eine farbige Border setzen.

Ja, z.B. per CellRenderer

Der SelectionListener sieht nicht aus ;-) Die Frage soll wohl lauten: Wie änderer ich die Darstellung der Selektion einer JTable? Anwort: per CellRenderer oder per JTable#setSelectionBackground(Color color) oder für die komplette Applikation ein anderes LaF setzen (z.B das Look and Feel des Systems)

die Frage verstehe ich nicht

Was verstehst Du unter Vorselektion? Man könnte per MouseMotionListener die Zeile beim überfahren selektieren. Eine Hervorhebung sobald die Maus über der Zeile ist könnte man mittels CellRenderer machen - kann aber ganz schon knifflig werden.

Beim mir hat der Taskmanager gar keine Gitterlinien, also könnte man das komplette Gitter deaktivieren.
Dann könnte man ein Blau als Selektionshintergrund und ein Weiss als Selektionhintergrund nehmen. Damit wäre man meinem Taskmanager schon ziemlich nahe.

zu 1. das mit dem border geht nicht aber hab ne einfachere methode gefunden und zwar
Java:
jTableProcess.setGridColor(new java.awt.Color(212,212,212));

das mit 2. hat geklapt

zu 3. da hast du recht mit der fragenstellung aber mit der farbe hat das wenig zu tun ! eher wie du sagst mit dem LaF
ne frage dazu 1 woher bekomme ich anndere LaF ??
und 2 wie benutz ich die dann ??

zu 3.1. das meine ich weil mommentan selectiert er so das ich beim ersten Object anfangen kann und so runterzeihen kann mit geprester maus taste (also ist der lisene aus das losslasen der teste ) ich will aber das er nur beim klick selectiert und dieses ziehen nicht mehr möglich ist !!

3.2 mit vorselection mein ich sowas wie die selection halt nur blasser und genau wie du gesagt hast soll das kommen wenn man mit der maus rüberfährt!!

hättest ihr vllt zu einigen stellen einen Beispielcode??
 
Zuletzt bearbeitet:

Johnny919

Aktives Mitglied
die meisten fragen wurden ja schon beantwortet
bleibt für michnur noch:

3.1 und wie mache ich das er nicht auch relece sonder auch press selectiert ??
ich denke Du meinst, dass er nicht erst bei release sondern schon bei Mouse press selektiert?

da kannst Du einen eigenen Mouselistener an der Tabelle anmelden und dann in der Methode für MousePress mittels setSelection (genau Signatur der Methode musst Du in der API nachsehen) die Zeile selektieren

ist genau so wie du gesagt hast aber beim mauslistener wie setze ich denn die selection ??
 

Michael...

Top Contributor
zu 3. da hast du recht mit der fragenstellung aber mit der farbe hat das wenig zu tun ! eher wie du sagst mit dem LaF
ne frage dazu 1 woher bekomme ich anndere LaF ??
und 2 wie benutz ich die dann ??
Mit LookAndFeels habe ich mich nie wirklich auseinander gesetzt. Setzen kann man sie per UIManager beim Programmstart. Folgender Code setzt z.B. das LookAndFeel des Betriebssystems. Man kann sich auf diverse LaFs im Internet runterladen.
Java:
try {
	UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception exc) {
	exc.printStackTrace();
}
ich will aber das er nur beim klick selectiert und dieses ziehen nicht mehr möglich ist !!
sowas?
Java:
table.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
3.2 mit vorselection mein ich sowas wie die selection halt nur blasser und genau wie du gesagt hast soll das kommen wenn man mit der maus rüberfährt!!
Da müsste man sich erst mal überlegen, wie man da konzeptionell vorgehen könnte.
Grundsätzlich, kannst Du ja einen MouseMotionListener an die Tabelle hängen und kannst über dessen mouseMoved() immer bestimmen über welcher Zelle/Zeile sich der Mauszeiger gerade befindet.
 

Johnny919

Aktives Mitglied
hmmm so hab einiges hinbekommen sind nur noch 2 sachen übrich
...das mit der mauslistener wenn man rüberfährt habe ich aufgegeben das schafe ich iwie nicht !!

das wichtigste ist ich habe der Tabelle eine aktualiesierung hinzugefürhrt da wenn ich nur das model ändere aus iwelche gründen unten lehrespalten entstehen muss ich jedesmal ein neues Model setzten!
Durch das setzte den neuen model geht aber die selection verlohren ....das will ich aber eigentlich nicht !
Wie kann ich das machen das wenn das objekt noch in der liste steht es auch selectiert bleibt ?
und am besten sollte auch die sortierung der tabelle da bleiben ?
was bleibt mir übrich ??

die zweite sache ist iwie die selection an sich. Irgendwie gefält mir das nicht das nur der background anders wird kann man das nicht so hinbekommen wie beim Windof Task Manager ??
Ein stärkerer rand und so eine blasse Farbe als hintergrund ......irgendeine idee ??
 

Michael...

Top Contributor
das wichtigste ist ich habe der Tabelle eine aktualiesierung hinzugefürhrt da wenn ich nur das model ändere aus iwelche gründen unten lehrespalten entstehen muss ich jedesmal ein neues Model setzten!
Durch das setzte den neuen model geht aber die selection verlohren ....das will ich aber eigentlich nicht !
Wie kann ich das machen das wenn das objekt noch in der liste steht es auch selectiert bleibt ?
und am besten sollte auch die sortierung der tabelle da bleiben ?
was bleibt mir übrich ??
Das ist ja Pfusch am Bau ;-) Suche den Fehler und elimeniere ihn, anderst wirst Du auf Dauer nicht glücklich.

die zweite sache ist iwie die selection an sich. Irgendwie gefält mir das nicht das nur der background anders wird kann man das nicht so hinbekommen wie beim Windof Task Manager ??
Ein stärkerer rand und so eine blasse Farbe als hintergrund ......irgendeine idee ??
Da bleibt Dir dann wirklich nur der Weg via CellRenderer übrig.
 

Johnny919

Aktives Mitglied
da ist kein fehler wie würdest du das denn mit der aktualiesierung machen ?
kleinen beispiel??

und kannst du das mit dem cellrenderer vllt bischen erklären das ich auch verstehe was du meinst
 

Michael...

Top Contributor
da ist kein fehler
wenn ich nur das model ändere aus iwelche gründen unten lehrespalten entstehen
Und wie würdest Du das bezeichnen?
wie würdest du das denn mit der aktualiesierung machen?
Ich verwende oder erbe meistens von DefaultTableModel. Bei einer sauberen Implementierung werden die Daten korrekt in der JTable dargestellt.
Wenn man ein neues Model setzen muss, nur weil sich Daten geändert haben, ist was falsch gelaufen.
und kannst du das mit dem cellrenderer vllt bischen erklären das ich auch verstehe was du meinst
Hier sind so grundlegende Dinge Rund um die JTable beschrieben: JavaInsel Tabellen
 

Johnny919

Aktives Mitglied
Ok den Fehler der kein Fehler war habe ich ausgebügelt ...also so fast manachmal kommt immer noch ein richtiger Fehler aber ich weis nicht wieso und wie ich ihn beheben kann.
HILFE ?^^
Fehler in der Console :
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.plaf.basic.BasicTableUI.paintCell(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paintCells(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paint(Unknown Source)
at javax.swing.plaf.ComponentUI.update(Unknown Source)
at javax.swing.JComponent.paintComponent(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JViewport.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintToOffscreen(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
at javax.swing.RepaintManager.paint(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)


weiter beschäftigt mich das Aussehen der Selection ...Leider hat mir dein tut auch nicht wieter geholfen !!
wie ist das denn Möglich zu ändern ...vllt ein Stichwort für mich ?

und dass mir so eine leichen hervorhebenung mit dem MousListener .... weis ich auch nicht wie ich das angehen soll da ich die hervorhebenung nicht hinbekomme....!!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Thallius JTable dynamisch Spaltenanzahl verändern AWT, Swing, JavaFX & SWT 2
I JTable Inhalte löschen ohne den JTable zu verändern! AWT, Swing, JavaFX & SWT 5
M Swing XML Datei in JTable darstellen + verändern AWT, Swing, JavaFX & SWT 3
R JTable Hintergrund der Zeile abhängig von Inhalt einer Zelle verändern AWT, Swing, JavaFX & SWT 3
S Hintergrundfarbe in einer Spalte der JTable verändern AWT, Swing, JavaFX & SWT 3
G Spaltenbereite bei JTable verändern AWT, Swing, JavaFX & SWT 2
D [JTable] Dateninhalt verändern, sobald editiert wird AWT, Swing, JavaFX & SWT 2
J JTable / Model Daten verändern AWT, Swing, JavaFX & SWT 5
D JTable-Größe mit Fenstergröße verändern. AWT, Swing, JavaFX & SWT 4
D JTable - Eingabeverhalten verändern AWT, Swing, JavaFX & SWT 2
D JTable - Textfarbe verändern AWT, Swing, JavaFX & SWT 3
J Border im Header bei JTable verändern AWT, Swing, JavaFX & SWT 3
I Swing JTable zeichnet kein vertical Grid AWT, Swing, JavaFX & SWT 6
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 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
D Swing JTable Renderer Grafikfehler AWT, Swing, JavaFX & SWT 0
K Swing JTable mit ImageIcon und Text in einer Zelle AWT, Swing, JavaFX & SWT 1
M Swing JTable GroupableHeader Background Color AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen


Oben