Thread View: be.comp.programming
6 messages
6 total messages
Started by DyXin
Thu, 15 May 2003 18:55
Java JList & toString() method vraagje
Author: DyXin
Date: Thu, 15 May 2003 18:55
Date: Thu, 15 May 2003 18:55
29 lines
2727 bytes
2727 bytes
Ik zit met volgend "probleem": Ik heb een applicatie (peer-to-peer chat programa) geschreven, waarin onder andere een JList in zit verwerkt met hierin de "contacts". Deze contacts zijn Objecten van het type "public class Phoenix extends UnicastRemoteObject implements IPhoenix", en bevatten elke oa een String name (de naam van de contact-persoon). IPhoenix is een klasse van het type "public interface IPhoenix extends Remote", die enkel een aantal method definitions bevat (die elk een "thows RemoteException" hebben, omwille van het feit dat de classe "extends Remote" is). Nu dacht ik zo: elke contact heeft een Vector met hierin zijn contactpersonen (IPhoenix-objecten, dus NIET de "echte" (subclass) Phoenix objecten). Als ik nu de toString() method over-write, dan kan ik, dacht ik, deze vector rechstreeks geven aan het JList-object, die dan via de toString() method de naam van de contactpersonen in de lijst laat zien! Allemaal goed en wel, maar als ik de toString() method in Phoenix overschrijf, krijg ik niets te zien in de lijst! Ik dacht dat dit misschien kon liggen aan het feit dat de Vector IPhoenix objecten bevat, en niet expliciet Phoenix-objecten, maar probleem is dat ik in IPhoenix de toString method niet kan over-write, omdat die dan "thows RemotException" in z'n definition moet hebben staan, en dan krijg je een compile error! Weet er iemand een oplossing om toch met ��n Vector te werken in plaats van 2 Vectors (1 met de echte objecten, 1 met de namen (Strings))? thnx! mvg, DyXin
Re: Java JList & toString() method vraagje
Author: Eddie Penninkhof
Date: Thu, 15 May 2003 20:20
Date: Thu, 15 May 2003 20:20
24 lines
1758 bytes
1758 bytes
> expliciet Phoenix-objecten, maar probleem is dat ik in IPhoenix de toString
> method niet kan over-write, omdat die dan "thows RemotException" in z'n
> definition moet hebben staan, en dan krijg je een compile error!
Waarom catch je de exception niet?
public String toString()
{
try
{
...
}
catch (RemoteException e)
{
return "ERROR";
}
}
Note: als dit een 'remote' call is (RMI/CORBA/....) dan is het
verstandiger dit ergens anders te doen, het resultaat op te slaan en in
toString() terug te geven. toString() wordt n.l. (door JList) in de
event-thread aangeroepen en dat zal je GUI 'sloom' doen aanvoelen.
CU, Eddie.
Re: Java JList & toString() method vraagje
Author: DyXin
Date: Thu, 15 May 2003 23:25
Date: Thu, 15 May 2003 23:25
31 lines
2161 bytes
2161 bytes
> Waarom catch je de exception niet?
>
> public String toString()
> {
> try
> {
> ...
> }
> catch (RemoteException e)
> {
> return "ERROR";
> }
> }
Het probleem is dat ik in m'n interface het volgende zou moeten zetten:
public String toString() {}
Maar als ik dit doe (ik krijg dit gecompileerd) en ik doe daarna rmic -v1.2
Phoenix, dan krijg ik een exception (error) die me zegt dat alle methodes in
de IPhoenix (interface) klasse in hun voorschrift "thows RemoteException"
moet staan...
Je voorstel leek me eerst ook te zullen werken, MAAR het probleem is dat het
een interface klasse is en deze dus geen body mag defini�ren... Jammer
genoeg heb ik zo wel een body...
Dit is echt wel lastig: moest ik op ��n of andere manier toch die toString
method kunnen overschrijven zou ik een veel "mooiere" programma structuur
krijgen...
mvg,
DyXin
Re: Java JList & toString() method vraagje
Author: Gerrit Cornelis
Date: Fri, 16 May 2003 08:33
Date: Fri, 16 May 2003 08:33
50 lines
3473 bytes
3473 bytes
Op het gevaar af dat ik de bal compleet missla. "DyXin" <DyXin@p@ndor@.be> wrote in message news:MoRwa.3803$1u5.425@afrodite.telenet-ops.be... > Ik zit met volgend "probleem": Ik heb een applicatie (peer-to-peer chat > programa) geschreven, waarin onder andere een JList in zit verwerkt met > hierin de "contacts". Deze contacts zijn Objecten van het type "public class > Phoenix extends UnicastRemoteObject implements IPhoenix", en bevatten elke > oa een String name (de naam van de contact-persoon). > IPhoenix is een klasse van het type "public interface IPhoenix extends > Remote", die enkel een aantal method definitions bevat (die elk een "thows > RemoteException" hebben, omwille van het feit dat de classe "extends Remote" > is). Dus IPhoenix is geen klasse maar een interface. > > Nu dacht ik zo: elke contact heeft een Vector met hierin zijn > contactpersonen (IPhoenix-objecten, dus NIET de "echte" (subclass) Phoenix > objecten). Als IPhoenix een interface is kunnen er geen objecten van bestaan. Een interface kan je namelijk niet instancieren. Dus het moeten andere objecten zijn. Alvorens je de vector doorgeeft aan je JList maak je dus een nieuwe vector met daarin de objecten gecast naar hun echte type in plaats van de Interface. Die 2e vector maak je gewoon on the fly. En is enkel nodig omdat statische typering het leven altijd moeilijker maakt dan het moet zijn. Als ik nu de toString() method over-write, dan kan ik, dacht ik, > deze vector rechstreeks geven aan het JList-object, die dan via de > toString() method de naam van de contactpersonen in de lijst laat zien! > Allemaal goed en wel, maar als ik de toString() method in Phoenix > overschrijf, krijg ik niets te zien in de lijst! Ik dacht dat dit misschien > kon liggen aan het feit dat de Vector IPhoenix objecten bevat, en niet > expliciet Phoenix-objecten, maar probleem is dat ik in IPhoenix de toString > method niet kan over-write, omdat die dan "thows RemotException" in z'n > definition moet hebben staan, en dan krijg je een compile error! > > Weet er iemand een oplossing om toch met ��n Vector te werken in plaats van > 2 Vectors (1 met de echte objecten, 1 met de namen (Strings))? > > thnx! > > mvg, > DyXin > >
Re: Java JList & toString() method vraagje
Author: DyXin
Date: Fri, 16 May 2003 11:46
Date: Fri, 16 May 2003 11:46
52 lines
3786 bytes
3786 bytes
> Ik zit met volgend "probleem": Ik heb een applicatie (peer-to-peer chat > programa) geschreven, waarin onder andere een JList in zit verwerkt met > hierin de "contacts". Deze contacts zijn Objecten van het type "public class > Phoenix extends UnicastRemoteObject implements IPhoenix", en bevatten elke > oa een String name (de naam van de contact-persoon). > IPhoenix is een klasse van het type "public interface IPhoenix extends > Remote", die enkel een aantal method definitions bevat (die elk een "thows > RemoteException" hebben, omwille van het feit dat de classe "extends Remote" > is). > > Nu dacht ik zo: elke contact heeft een Vector met hierin zijn > contactpersonen (IPhoenix-objecten, dus NIET de "echte" (subclass) Phoenix > objecten). Als ik nu de toString() method over-write, dan kan ik, dacht ik, > deze vector rechstreeks geven aan het JList-object, die dan via de > toString() method de naam van de contactpersonen in de lijst laat zien! > Allemaal goed en wel, maar als ik de toString() method in Phoenix > overschrijf, krijg ik niets te zien in de lijst! Ik dacht dat dit misschien > kon liggen aan het feit dat de Vector IPhoenix objecten bevat, en niet > expliciet Phoenix-objecten, maar probleem is dat ik in IPhoenix de toString > method niet kan over-write, omdat die dan "thows RemotException" in z'n > definition moet hebben staan, en dan krijg je een compile error! > > Weet er iemand een oplossing om toch met ��n Vector te werken in plaats van > 2 Vectors (1 met de echte objecten, 1 met de namen (Strings))? Ik heb het opgelost gekregen als volgt... Om genericiteit te behouden blijft de vector een vector van IPhoenix objecten, zodanig dat eender welke klasse die IPhoenix implementeert "erin past". Probleem is dan dat de standaard toString() method niet kan overschreven worden, en je dus in je lijst gewoon de "geheugeninhoud" ziet van het object ipv een "mooie" naam. Na wat zoeken heb ik echter gevonden dat je de default ListCellRenderer methode die JList aanroept om het object uit de vector op het scherm af te beelden, kunt overschrijven! In MyellRenderer controleer ik dan eerst of het object van type (IPhoenix) is, en wanneer dit het geval is roep ik de methode getName() aan die daarin gedefinieerd staat, in plaats van default de toString method(). Wanneer het object noet van type IPhoenix is wordt de standaard toString() method opgeroepen!... Nu heb ik toch met ��n vector van (Remote) objecten m'n contactlist kunnen opbouwen! thnx! mvg, DyXin
Re: Java JList & toString() method vraagje
Author: Joepsel
Date: Tue, 20 May 2003 09:38
Date: Tue, 20 May 2003 09:38
73 lines
4337 bytes
4337 bytes
Heej DyXin, Ik zit met hetzelfde probleem en ik ben erg benieuwd naar je code van je 'MyCellRenderer'. Zou je die hier kunnen laten zien? Alvast bedankt! -- Joep "DyXin" <DyXin@p@ndor@.be> wrote in message news:kc4xa.4554$1u5.337@afrodite.telenet-ops.be... > > Ik zit met volgend "probleem": Ik heb een applicatie (peer-to-peer chat > > programa) geschreven, waarin onder andere een JList in zit verwerkt met > > hierin de "contacts". Deze contacts zijn Objecten van het type "public > class > > Phoenix extends UnicastRemoteObject implements IPhoenix", en bevatten elke > > oa een String name (de naam van de contact-persoon). > > IPhoenix is een klasse van het type "public interface IPhoenix extends > > Remote", die enkel een aantal method definitions bevat (die elk een "thows > > RemoteException" hebben, omwille van het feit dat de classe "extends > Remote" > > is). > > > > Nu dacht ik zo: elke contact heeft een Vector met hierin zijn > > contactpersonen (IPhoenix-objecten, dus NIET de "echte" (subclass) Phoenix > > objecten). Als ik nu de toString() method over-write, dan kan ik, dacht > ik, > > deze vector rechstreeks geven aan het JList-object, die dan via de > > toString() method de naam van de contactpersonen in de lijst laat zien! > > Allemaal goed en wel, maar als ik de toString() method in Phoenix > > overschrijf, krijg ik niets te zien in de lijst! Ik dacht dat dit > misschien > > kon liggen aan het feit dat de Vector IPhoenix objecten bevat, en niet > > expliciet Phoenix-objecten, maar probleem is dat ik in IPhoenix de > toString > > method niet kan over-write, omdat die dan "thows RemotException" in z'n > > definition moet hebben staan, en dan krijg je een compile error! > > > > Weet er iemand een oplossing om toch met ��n Vector te werken in plaats > van > > 2 Vectors (1 met de echte objecten, 1 met de namen (Strings))? > > Ik heb het opgelost gekregen als volgt... > Om genericiteit te behouden blijft de vector een vector van IPhoenix > objecten, zodanig dat eender welke klasse die IPhoenix implementeert "erin > past". Probleem is dan dat de standaard toString() method niet kan > overschreven worden, en je dus in je lijst gewoon de "geheugeninhoud" ziet > van het object ipv een "mooie" naam. Na wat zoeken heb ik echter gevonden > dat je de default ListCellRenderer methode die JList aanroept om het object > uit de vector op het scherm af te beelden, kunt overschrijven! In > MyellRenderer controleer ik dan eerst of het object van type (IPhoenix) is, > en wanneer dit het geval is roep ik de methode getName() aan die daarin > gedefinieerd staat, in plaats van default de toString method(). Wanneer het > object noet van type IPhoenix is wordt de standaard toString() method > opgeroepen!... > > Nu heb ik toch met ��n vector van (Remote) objecten m'n contactlist kunnen > opbouwen! > > thnx! > > mvg, > DyXin > >
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads