Tabellenspalten trennen

Status
Nicht offen für weitere Antworten.
J

jensi

Gast
Ich hab eine Tabelle, deren Einträge aus zwei verschiedenen Tabellen kommen.
Nun will ich die Spalten der 1.Tabell von den Spalten der 2. Tabelle visioell trennen. Also einen etwas dickeren Strich zwischen den Spalten währe cool. geht sowas? und wie?
 
J

jensi

Gast
würde vieleicht gehen. kann ich irgendwie die breite der spalte statisch machen (unabhängig von einer verschiebung der spaltenbreite) und sehr klein festlegen? dann wirken die beiden randlinien als eine dickere.
 
J

jensi

Gast
und wie soll das gehen? ich kann doch mit border nur die umrandung einer ganzen tabelle beeinflussen!???
 

Illuvatar

Top Contributor
Du kannst die Zelle leer lassen und einen Renderer schreiben, der die Zelle einfach schwarz füllt.
Abgesehen davon gibt es natürlich auch die Methode JTable#setRowHeight.
 

AlArenal

Top Contributor
Illuvatar hat gesagt.:
Du kannst die Zelle leer lassen und einen Renderer schreiben, der die Zelle einfach schwarz füllt.
Abgesehen davon gibt es natürlich auch die Methode JTable#setRowHeight.

Spalten sind aber senkrecht ;)
 
J

jensi

Gast
1. wenn ich die felder schwarz mache, wie mache ich sie statisch?
2. richtig. spalten sind senkrecht. hilft mir also auch nicht weiter.
 

SamHotte

Top Contributor
wie wäre es, einen Renderer zu nehmen und den linken Rand von der ersten Spalte der zweiten Tabelle dicker zu zeichnen?
 
J

jensi

Gast
die idee hatte ich auch schon, aber das ganze steht in einer tabelle.
 

SamHotte

Top Contributor
schon klar - aber du kannst doch dem Renderer sagen, dass er in Spalte x etwas anders macht als sonst, richtig? Dann brauchste nur noch die Spaltennummer, bei der der Inhalt von Tabelle 2 anfängt ...
 

Sky

Top Contributor
jensi hat gesagt.:
und wie soll das gehen? ich kann doch mit border nur die umrandung einer ganzen tabelle beeinflussen!???
Hab den Post übersehen, also hier meine Antwort (dafür ausführlich):

Du brauchst einen Renderer, der pro Zelle den Border bestimmen kann; sieht ungefähr so aus:


Renderer:
Code:
class MyRenderer extends DefaultTableCellRenderer {
  public Component getTableCellRendererComponent( JTable table, Object value,
                                                  boolean isSelected,
                                                  boolean hasFocus, int row,
                                                  int column ) {
    super.getTableCellRendererComponent( table, value, isSelected, hasFocus,
                                         row, column );
    setBorder( new MyCellBorder( Color.green, 0, 0, 0, 5 ) ); // Grüner rechter Rand  ;-)
    return this;
  }
}



Border:
Code:
class MyCellBorder extends EmptyBorder {

  Color color;
  int top, left, bottom, right;

  public MyCellBorder( Color color, int top, int left, int bottom, int right ) {
    super( top, left, bottom, right );

    this.color = color;
    this.top = top;
    this.left = left;
    this.bottom = bottom;
    this.right = right;
  }

  public void paintBorder( Component c, Graphics g, int x, int y, int width,
                           int height ) {
    Color oldColor = g.getColor();
    g.setColor( color );

    g.fillRect( x, y, width, top );
    g.fillRect( x, y, left, height );
    g.fillRect( x, height - bottom, width, bottom );
    g.fillRect( width - right, y, right, height );

    g.setColor( oldColor );
  }

}

Renderer z.B. für Spalte '0' setzen:
Code:
table.getColumnModel().getColumn(0).setCellRenderer(new MyRenderer());
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben