/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
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
>
>



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste