Toon posts:

[Java] JTextField renderer

Pagina: 1
Acties:

Verwijderd

Topicstarter
As one has, heb ik een JTextField met wat tekst à la "lelijkeprefix.mooienaam". Nu wil ik alleen "mooienaam" tonen aan de gebruiker en de hele tekst alleen op de achtergrond gebruiken.

Vreemd genoeg kan ik echter niets vinden over het wijzigen van de renderer van een JTextField (meest voordehand liggende oplossing), wschl. omdat JTextField zelf een renderer is?

Hulp is van harte welkom :)

Verwijderd

kan je geen array maken met de lange namen van de Textfields en dan enkel de tekst uit de array halen na het puntje?

Verwijderd

Topicstarter
Zou wellicht kunnen, maar is niet wenselijk omdat dit tekstveld één van een aantal is en worden in een loop uitgelezen. Natuurlijk zou ik in die loop kunnen gaan checken "O, dit is een speciaal tekstveld, dus dan moet ik dit en dat doen", maar het zou natuurlijk veel mooier zijn als de getText() methode gewoon direct de waarde zou geven die ik nodig heb en een renderer die vervolgens die waarde gewoon anders weergeeft. Bij comboboxes, tree cells enz. werkt dit altijd prima, dus ik vraag me af of en hoe dit bij een JTextField kan...

Verwijderd

en als je nu een functie maakt die oa een getText() doet en de nodig aanpassingen dan teruggeeft aan het object?

Verwijderd

Topicstarter
Dan zou ik een aparte class moeten maken die JTextField extend en dat soort object voor elk TextField dat ik heb moeten gebruiken (of in mijn loop moeten type checken). Niet zo netjes, had eigenlijk gehoopt dat er een elegantere oplossing zou zijn.

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 27-05 21:44

Robtimus

me Robtimus no like you

Als aanvulling op taramis, maak anders een subclass van JTextField:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class SpecialField extends JTextField
{
    protected String fullstring;
    public void setText(String text)
    {
        fullstring = text;
        int index = text.indexOf(".");
        if (index != -1)
        {
            super.setText(text.substring(index+1);
        }
        else
        {
            super.setText(text);
        }
    }
    // getText doet hetzelfde als anders.
}


edit:
was je zelf ook achter...

[ Voor 6% gewijzigd door Robtimus op 27-01-2004 12:09 ]

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Verwijderd

Topicstarter
Ja, inderdaad ;) Was echt specifiek op zoek naar een manier om de renderer te wijzigen. zoals je dat dus bij ComboBoxes kunt doen. Maar bedankt voor de hulp in ieder geval :)

  • Stephan Oudmaijer
  • Registratie: Oktober 2000
  • Laatst online: 16-08-2023
Verwijderd schreef op 27 januari 2004 @ 12:20:
Ja, inderdaad ;) Was echt specifiek op zoek naar een manier om de renderer te wijzigen. zoals je dat dus bij ComboBoxes kunt doen. Maar bedankt voor de hulp in ieder geval :)
Kun je een DocumentListener voor gebruiken. Hier een voorbeeld:

http://java.sun.com/docs/...nts/documentlistener.html

Verwijderd

Topicstarter
En hoe werkt dat dan precies...? Een property zetten als de inhoud van het textfield wordt gewijzigd oid?
Pagina: 1