|  | 		    
					
        
         
          
         
	
          | |  | TableCellRenderer og Border Fra : Morten Rasmussen
 | 
 Dato :  22-11-01 15:35
 | 
 |  | Hej folkens!
 
 Er der nogle der kan hjælpe! Når man har en JTable og 'går rundt' i den får
 man en lille markering rundt om cellen så man kan se hvilken celle man er i!
 
 /*
 Normalt markeres hele rækken op, men hvis jeg skriver nedenstående linie
 fungere det som ovenstående!
 table.setRowSelectionAllowed(false);
 */
 
 Dette er jo fint, men hvis jeg laver en renderer som extender fra en
 JCheckBox (for at få en ckeckbox i en celle) får jeg ikke en cellemarkering
 når jeg 'går ind' i cellen!?
 
 Herunder har jeg et uddrag af min 'CheckBox renderer' med de linier jeg
 merer der skal til (men som jo ikke virker!). Tak hvis nogle kan hjælpe.
 
 public class CheckBoxCellRendererExt extends JCheckBox
 implements TableCellRendererExt, Serializable
 {
 :: initialisering m.m.
 
 public Component getTableCellRendererComponent(JTable table, Object
 value,
 boolean isSelected, boolean hasFocus, int row, int
 column) {
 ::
 :: Herundee er den kode jeg mener burde gøre hvad jeg ønsker
 if (hasFocus) {
 setBorder( UIManager.getBorder("Table.focusCellHighlightBorder") ); /*
 DENNE linie! */
 if (table.isCellEditable(row, column)) {
 
 
 
 
 
 
 
 
 
 super.setForeground( Color.red );//UIManager.getColor("Table.focusCxellForeg
 round") );
 
 
 
 
 
 
 
 
 
 super.setBackground( Color.green );//UIManager.getColor("Table.focusxCellBac
 kground") );
 }
 else
 setBorder(noFocusBorder);
 }
 }
 }
 
 
 
 
 
 |  |  | 
  Lars Mosegård (22-11-2001) 
 
	
          | |  | Kommentar Fra : Lars Mosegård
 | 
 Dato :  22-11-01 18:06
 | 
 |  | 
 "Morten Rasmussen" <mra@ofir.dk> skrev i en meddelelse
 news:3bfd0d18$0$239$edfadb0f@dspool01.news.tele.dk...
 >     public Component getTableCellRendererComponent(JTable table, Object
 > value,
 >                           boolean isSelected, boolean hasFocus, int row, int
 > column) {
 >     ::
 >     :: Herundee er den kode jeg mener burde gøre hvad jeg ønsker
 >    if (hasFocus) {
 >      setBorder( UIManager.getBorder("Table.focusCellHighlightBorder") ); /*
 > DENNE linie! */
 >
 Hvis jeg husker rigtigt, skal du tjekke for isSelected istedet for hasFocus.
 
 En anden måde at få CheckBoxes i en JTable er at lave sin egen TableModel
 nedarvende fra AbstractTableModel. Man skal så:
 - Returnere Boolean-s i getValueAt
 - Huske at overskrive getColumnClass
 
 Mvh
 Lars
 
 
 
 
 |  |  | 
  Morten Rasmussen (23-11-2001) 
 
	
          | |  | Kommentar Fra : Morten Rasmussen
 | 
 Dato :  23-11-01 14:53
 | 
 |  | Tak for svaret!
 
 Jeg har ikke brugt mig egen TableModel som du skriver - en sådan  har jeg på
 et helt ander 'overordnet' neveau! ... om det så er hensigtsmæssigt skal jeg
 være usagt.
 
 Problemet er at en CheckBox umiddelbart ikke har har en 'Border'!!?, når jeg
 kalder getBorder er den ihvertfald null. Istedet blev løsningen som
 følgende:
 
 if (hasFocus) {
 if (table.isCellEditable(row, column)) {
 
 uper.setBackground( UIManager.getColor("Table.selectionBackground") );
 } else {
 setBorder(noFocusBorder);
 }
 
 ... og det virker! Men tak alligevel.
 
 /Morten
 
 
 
 "Lars Mosegård" <lamos@post8.tele.dk> wrote in message
 news:3bfd3020$0$25410$edfadb0f@dspool01.news.tele.dk...
 >
 > "Morten Rasmussen" <mra@ofir.dk> skrev i en meddelelse
 > news:3bfd0d18$0$239$edfadb0f@dspool01.news.tele.dk...
 > >     public Component getTableCellRendererComponent(JTable table, Object
 > > value,
 > >                           boolean isSelected, boolean hasFocus, int row,
 int
 > > column) {
 > >     ::
 > >     :: Herundee er den kode jeg mener burde gøre hvad jeg ønsker
 > >    if (hasFocus) {
 > >      setBorder( UIManager.getBorder("Table.focusCellHighlightBorder") );
 /*
 > > DENNE linie! */
 > >
 > Hvis jeg husker rigtigt, skal du tjekke for isSelected istedet for
 hasFocus.
 >
 > En anden måde at få CheckBoxes i en JTable er at lave sin egen TableModel
 > nedarvende fra AbstractTableModel. Man skal så:
 > - Returnere Boolean-s i getValueAt
 > - Huske at overskrive getColumnClass
 >
 > Mvh
 > Lars
 >
 >
 
 
 
 
 |  |  | 
 |  |