Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502

    [Java] Cambiare JLabel con JTextField a run-time

    Ciao,
    mi stavo chiedendo se c'è un qualche modo per cambiare tipo di controllo a run-time.
    Quello che vorrei fare è una JLabel che all'occorrenza diventi un JTextField, e poi possa ritornare una JLabel.

    Tutto questo per presentare dati prelevati da un DB implementando una maschera con JLabel e non con JTextField.
    E' possibile? Stavo guardando di fare una classe che estende JComponent e farle restituire il componente che mi serve, un po' come renderer e editor di una JTable, ma non ci riesco.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [Java] Cambiare JLabel con JTextField a run-time

    Originariamente inviato da Rubox
    mi stavo chiedendo se c'è un qualche modo per cambiare tipo di controllo a run-time.
    Quello che vorrei fare è una JLabel che all'occorrenza diventi un JTextField, e poi possa ritornare una JLabel.
    Questo no. Nel senso che come per qualunque oggetto, una volta istanziato ... quel tipo è e rimane.

    Puoi togliere il JLabel dal container e inserire nel container un nuovo JTextField. Ma qui bisogna vedere se e con quale layout manager gestisci la disposizione dei componenti. E in base al layout manager può essere necessario ri-validare il layout ed eventualmente fare altro affinché la modifica nel container abbia effetto visuale.

    O in alternativa "giocare" sulla visibilità dei componenti. JLabel e JTextField sono sempre presenti, già fin dall'inizio, nel container e visualizzi/nascondi uno o l'altro. Anche qui dipende però dal layout manager.

    Originariamente inviato da Rubox
    Stavo guardando di fare una classe che estende JComponent e farle restituire il componente che mi serve, un po' come renderer e editor di una JTable, ma non ci riesco.
    No assolutamente, perché un Component/JComponent in generale non funziona certo come i renderer/editor (che sono cose specifiche e appunto non sono componenti "grafici", il cui "design" è tale per cui si ha questa maggiore "astrazione" che permette di fornire il componente da usare).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    Ho risolto "esteticamente".
    Avendo già un metodo ricorsivo che mi abilita o disabilita i controlli a seconda della possibilità o meno di modificare, gioco con i bordi.
    Se il JTextField non è abilitato, gli metto il bordo di una JLabel, se al contrario è abilitato, gli rimetto il bordo di una JTextField.

    Non sarà la miglior cosa, ma funziona.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.