Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207

    [JAVA] colorare di un determinato colore il tab,su cui si clicca, di un jtabbedpane

    Ho provato con tabbedPane.setBackground(Color.red); ma mi colora di rosso tutti i tab del jtabbedpane.

    Cerco un modo per colorare un tab di un jtabbed pane, nn appena si clicca su di esso..e se ci si sposta ad un altro tab, il tab precedente deve rimanere colorato. cm si fa?

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

    Re: [JAVA] colorare di un determinato colore il tab,su cui si clicca, di un jtabbedp

    Originariamente inviato da jin85
    Ho provato con tabbedPane.setBackground(Color.red); ma mi colora di rosso tutti i tab del jtabbedpane.

    Cerco un modo per colorare un tab di un jtabbed pane, nn appena si clicca su di esso..e se ci si sposta ad un altro tab, il tab precedente deve rimanere colorato. cm si fa?
    Stai usando il setTabComponentAt() di cui abbiamo parlato in questi ultimi giorni?? Puoi impostare lo sfondo al JLabel che imposti sulla linguetta (e nota, imposta anche setOpaque(true) altrimenti JLabel è trasparente).
    Non è il massimo ... vedrai che c'è uno spazio a sinistra/destra che rimane del colore del JTabbedPane ma ... meglio che niente. L'unica cosa brutta che ho notato è che lo sfondo del JLabel copre la linea superiore del focus nel tab.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207
    si ma lo sfondo del JLabel che imposto sulla linguetta deve cambiare nel momento in cui clicco su quella determinata linguetta..e se mi sposto su un'altra linguetta..lo sfondo deve rimanere uguale..funziona in questo modo?

    e lo sfondo del JLabel dove lo devo settare?in che Listener?

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207
    il background del JLabel e il setOpaque dove li devo inserire?

    in quale listener?

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da jin85
    il background del JLabel e il setOpaque dove li devo inserire?
    Il setOpaque potresti settarlo quando inserisci il tab (fai addTab() e poi setTabComponentAt() per settare la label, no?). Non vorrei però che lo sfondo di default del JLabel sia diverso da quello di JTabbedPane ... questione solo "estetica", che comunque si potrebbe risolvere.

    Originariamente inviato da jin85
    in quale listener?
    Puoi registrare un ChangeListener sul JTabbedPane oppure un ChangeListener ma sul SingleSelectionModel del JTabbedPane (vedi getModel()).

    Lo sfondo ovviamente lo setti in risposta all'evento ChangeEvent.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Re: [JAVA] colorare di un determinato colore il tab,su cui si clicca, di un jtab

    Originariamente inviato da andbin L'unica cosa brutta che ho notato è che lo sfondo del JLabel copre la linea superiore del focus nel tab.
    Può usare setFocusable(false) per far scomparire il bordino del focus...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207
    ho fatto in questo modo...ma nn funge...

    questo è il codice dove aggiungo le tab e faccio setComponentAt, in questo pezzo ho aggiunto il setOpaque()

    codice:
    for (int i=0; i<listamedici.size();i++, k++){
    	                	 
    	                	 Pannello_inserimento_modifica PannelloFrame =new Pannello_inserimento_modifica(this, tipoframe);
    	         			 PannelloFrame.setSize(this.getSize());
    	                	 String nomcognom =listamedici.get(i).getNominativo();
    	                	 tabbedPane.addTab(/*nomcognom*/"",PannelloFrame);
    	                	 
    	                	 //codice per allineare le label dei tab a sinistra
    	                	 JLabel labtab = new JLabel (nomcognom, SwingConstants.LEFT);
    	                	 labtab.setPreferredSize (new Dimension (127, labtab.getPreferredSize().height));
    	                	 tabbedPane.setTabComponentAt (k, labtab);
    	                	 labtab.setOpaque(true);
    	                	 
    	                	 String PanneloFrame = PannelloFrame+"i";
    	                	 
    	                 }
    questo è invece il changelistener del jtabbedpane

    codice:
    public class TabListener implements ChangeListener {
    	    public void stateChanged(ChangeEvent e) {
    	      
    	     
    	     JLabel tab = new JLabel();
    	     tab.setBackground(Color.red);
        	 //labtab.setOpaque(true);
    	     tab.setFocusable(false);
    	     
    	    } 
    	  }

    ma quando vado a cliccare su un determinato tab nn me lo colora di rosso.....help

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da jin85
    questo è invece il changelistener del jtabbedpane

    codice:
    public class TabListener implements ChangeListener {
    	    public void stateChanged(ChangeEvent e) {
    	      
    	     
    	     JLabel tab = new JLabel();
    	     tab.setBackground(Color.red);
        	 //labtab.setOpaque(true);
    	     tab.setFocusable(false);
    	     
    	    } 
    	  }

    ma quando vado a cliccare su un determinato tab nn me lo colora di rosso.....help
    Ma ovvio ... scusa, ragiona un momento: innanzitutto ChangeListener ti dice solo che "qualcosa" è cambiato ... non ti dice cosa, quindi prima di tutto devi invocare getSelectedIndex() sul JTabbedPane per sapere quale è l'indice del tab appena selezionato.

    Poi ovviamente non devi istanziare un nuovo JLabel (a che serve? ... che centra?) ma devi invocare getTabComponentAt() (con l'indice ottenuto prima) per avere il Component che è sul tab (che tu sai è un JLabel). Non c'è nemmeno da fare un cast a JLabel, perché setBackground è già definito in Component.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207
    si hai ragione...è che in questi giorni sto lavorando con 38 di febbre..e faccio molto cavolate..xkè nn ci sto cn la testa...cmq ho modificato in questo modo...ma mi da un'eccezzione.. :

    codice:
    public class TabListener implements ChangeListener {
    	    public void stateChanged(ChangeEvent e) {
    	      
    	     int pos = tabbedPane.getSelectedIndex();
    	     Component tab = tabbedPane.getTabComponentAt(pos);
    	     tab.setBackground(Color.red);
    
    	    } 
    	  }
    l'eccezzione è nullpointerexception

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da jin85
    l'eccezzione è nullpointerexception
    Sì ... ma dove? Fai stampare il 'pos' e fai stampare 'tab' su System.out, così almeno si capisce qualcosa (e vedi cosa succede).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

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 © 2024 vBulletin Solutions, Inc. All rights reserved.