Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [Java] setForeground() non funziona in JTextArea

    Ciao, vorrei cambiare colore al testo di una JTextArea, ma con setForeground non funziona. Vi posto il codice:
    codice:
    JTextArea ta = new JTextArea(); 
    ta.setText("Ciao"); 
    ta.setForeground(Color.BLACK); 
    ta.setLineWrap(true); 
    ta.setWrapStyleWord(true); 
    ta.setBounds(125, (77*i)+9, 600, 75); 
    ta.setEnabled(false); 
    this.add(ta);
    Ho visto anche su diverse guide dicono semplicemente di usare setForeground()

  2. #2

    Re: [Java] setForeground() non funziona in JTextArea

    Originariamente inviato da allwarezz
    Ciao, vorrei cambiare colore al testo di una JTextArea, ma con setForeground non funziona. Vi posto il codice:
    codice:
    ta.setForeground(Color.BLACK);
    Il nero è il colore di default, devi applicare un colore diverso.

  3. #3
    Me ne da un'altro di colore di default, comunque ho provato con 4/5 colori ma niente, rimane sempre lo stesso il colore. Può dipendere dal Frame o dal ContentPane??

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Il codice che hai postato imposta il colore del testo (FOREGROUND), a nero (colore di default).
    Cambiando tale impostazione il colore del testo viene cambiato (garantito).

    Se hai comportamenti diversi, c'è qualcos'altro. A questo putno dovresti postare il codice completo.

    Frame e ContentPane non c'entrano nulla con le impostazioni del colore del testo del controllo JTextArea.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Se hai comportamenti diversi, c'è qualcos'altro. A questo putno dovresti postare il codice completo.
    Di seguito c'è il codice completo, spero tu possa aiutarmi. grazie in anticipo.
    codice:
    import java.awt.*
    import javax.swing.*
    import quiz.QuizPatente;
    public class QuizABFrame extends JFrame {
    	private JTextArea areaTime;
    	private int resMinuti = 29;
    	private int resSecondi = 59;
    	private int tmpMin, tmpSec;
    	private int generalIndex = 0;
    	
    	
    	public QuizABFrame(){			
    		visualizza(settings.QuizABFrame.DEFAULT_START_QUIZ, resMinuti, resSecondi);
    	}
    	
    	public void visualizza(int index, int minuti, int secondi){
    		this.setContentPane(new Container());
    		this.setBackground(settings.QuizABFrame.sfondo);
    		makeTopHeader('M');
    		makeMiddleHeader();
    		makeBottomHeader();
    		makeBodyQuiz(index);
    		makeFooterQuiz(index, minuti, secondi);
    		insertLogo();	
    	}
    	
    	public void visualizzaRiassunto(int minuti, int secondi){
    		this.setContentPane(new Container());
    		this.setBackground(settings.QuizABFrame.sfondo);
    		makeTopHeader('R');
    		makeBodyQuizRiassunto();
    		makeFooterQuiz(settings.QuizABFrame.DEFAULT_START_QUIZ, minuti, secondi);
    		insertLogo();
    	}
    	private void insertLogo() {
    		JLabel logo = new JLabel(new ImageIcon("imgs/logo5ruote.png"));
    		logo.setBounds(465, 495, 85, 73);
    		this.getContentPane().add(logo);
    	}
    	private void makeTopHeader(char frameType){
    		switch (frameType){
    			case 'M': JLabel [] uno_quarantaLab = new JLabel[4];
    					  ImageIcon [] uno_quarantaImg = {new ImageIcon("imgs/quizLayout/topHeader/uno_dieci_small.gif"), new ImageIcon("imgs/quizLayout/topHeader/undici_venti_small.gif"),
    					  new ImageIcon("imgs/quizLayout/topHeader/ventuno_trenta_small.gif"),new ImageIcon("imgs/quizLayout/topHeader/trentuno_quaranta_small.gif")};		
    					  for (int i=0; i<uno_quarantaLab.length; i++){
    						  uno_quarantaLab[i] = new JLabel(uno_quarantaImg[i]);
    						  uno_quarantaLab[i].setBounds((i*226),0, 226,56);
    						  this.getContentPane().add(uno_quarantaLab[i]);
    					  }
    					  break;
    			case 'R': JLabel header = new JLabel(new ImageIcon("imgs/quizLayout/topHeader/header_riassunto.jpg"));
    					  header.setBounds(0,0,920,75);
    					  this.getContentPane().add(header);
    					  break;
    		}		  
    	}
    	private void makeMiddleHeader() {
    		JLabel [] uno_dieciLab = new JLabel[10];
    		for (int i=0; i<uno_dieciLab.length; i++){
    			uno_dieciLab[i] = new JLabel(new ImageIcon("imgs/quizLayout/middleHeader/"+(i+1)+"_10.gif"));
    			if(i==0)
    				uno_dieciLab[i].setBounds(1,62, 92,53);
    			else
    				uno_dieciLab[i].setBounds(3+(i*90),62, 90,53);
    			this.getContentPane().add(uno_dieciLab[i]);
    		}
    		
    	}
    	private void makeBottomHeader() {
    		JLabel [] uno_quarantaLab = new JLabel[40];
    		for (int i=0; i<uno_quarantaLab.length; i++){
    			uno_quarantaLab[i] = new JLabel(new ImageIcon("imgs/quizLayout/bottomHeader/"+(i+1)+"_40.gif"));
    			if(i==0){
    				uno_quarantaLab[i].setBounds(0,123, 25,22);
    			}else{
    				if(i <= 22){
    					uno_quarantaLab[i].setBounds(2+(i*23),123, 23,22);
    				}else{
    					uno_quarantaLab[i].setBounds(2+(i*22)+22,123, 22,22);
    				}
    			}			
    			this.getContentPane().add(uno_quarantaLab[i]);
    		}
    		
    	}
    	private void makeBodyQuiz(int index){
    		JLabel numProp = new JLabel(new ImageIcon("imgs/quizLayout/prop_number/prop_"+(index+1)+".gif"));
    		numProp.setBounds(837, 160, 53, 51);
    		this.getContentPane().add(numProp);
    		
    		JTextArea ta = new JTextArea(9,50);
    		ta.setText("\n\n\n"+QuizPatente.quiz[index].risposta);
    		ta.setFont(settings.QuizABFrame.fontTxtArea);		
    		ta.setLineWrap(true);
    		ta.setWrapStyleWord(true);
    		ta.setBounds(settings.QuizABFrame.TXT_LOCATION_X,settings.QuizABFrame.TXT_LOCATION_Y,settings.QuizABFrame.TXT_AREA_WIDTH, settings.QuizABFrame.TXT_AREA_HIGH);
    		ta.setEnabled(false);
    		this.add(ta);
    		
    		JLabel segnale = new JLabel(new ImageIcon("imgs/rappresentazioni_grafiche/s"+QuizPatente.quiz[index].segnale+".gif"));
    		segnale.setBounds(50, 170, 280, 280);
    		this.getContentPane().add(segnale);
    		
    		JLabel bgSegnale = new JLabel(new ImageIcon("imgs/quizLayout/bg_segnale.gif"));
    		bgSegnale.setBounds(settings.QuizABFrame.BG_SEGNALE_LOCATION_X, settings.QuizABFrame.BG_SEGNALE_LOCATION_Y, settings.QuizABFrame.BG_SEGNALE_WIDTH,settings.QuizABFrame.BG_SEGNALE_HIGH );
    		this.getContentPane().add(bgSegnale);
    	
    		JLabel []soluzioni = new JLabel[2];
    		switch (QuizPatente.risposte_user[index]){
    				case 'N': soluzioni[0] = new JLabel(new ImageIcon("imgs/quizLayout/V.gif")); 
    						  soluzioni[1] = new JLabel(new ImageIcon("imgs/quizLayout/F.gif"));
    						  break;
    				case 'V': soluzioni[0] = new JLabel(new ImageIcon("imgs/quizLayout/VX.gif")); 
    						  soluzioni[1] = new JLabel(new ImageIcon("imgs/quizLayout/F.gif"));
    						  break;
    				case 'F': soluzioni[0] = new JLabel(new ImageIcon("imgs/quizLayout/V.gif")); 
    						  soluzioni[1] = new JLabel(new ImageIcon("imgs/quizLayout/FX.gif"));
    						  break;
    		}		
    		soluzioni[0].setBounds(550, 400, 55, 55);
    		soluzioni[1].setBounds(700, 400, 55, 55);
    		this.generalIndex = index;
    		
    		soluzioni[0].addMouseListener(new MouseListener(){
    			
    			@Override
    			public void mouseClicked(MouseEvent arg) {
    				QuizPatente.risposte_user[generalIndex]='V';
    				if(settings.QuizABFrame.AVANTI_AUTO)
    					visualizza(((generalIndex+1)%40), tmpMin, tmpSec);
    				else
    					visualizza(generalIndex, tmpMin, tmpSec);
    			}
    			public void mouseEntered(MouseEvent arg0) {}
    			public void mouseExited(MouseEvent arg0) {}
    			public void mousePressed(MouseEvent arg0) {}
    			public void mouseReleased(MouseEvent arg0) {}
    			
    		});
    		soluzioni[1].addMouseListener(new MouseListener(){
    			
    			@Override
    			public void mouseClicked(MouseEvent arg) {
    				QuizPatente.risposte_user[generalIndex]='F';
    				if(settings.QuizABFrame.AVANTI_AUTO)
    					visualizza(generalIndex+1, tmpMin, tmpSec);
    				else
    					visualizza(generalIndex, tmpMin, tmpSec);								
    			}
    			public void mouseEntered(MouseEvent arg0) {}
    			public void mouseExited(MouseEvent arg0) {}
    			public void mousePressed(MouseEvent arg0) {}
    			public void mouseReleased(MouseEvent arg0) {}
    			
    		});
    		this.getContentPane().add(soluzioni[0]);
    		this.getContentPane().add(soluzioni[1]);
    		
    		JLabel bgVF = new JLabel(new ImageIcon("imgs/quizLayout/bg_VF.gif"));
    		bgVF.setBounds(settings.QuizABFrame.TXT_LOCATION_X, 350, 500, 150);
    		this.getContentPane().add(bgVF);
    	}
    	private void makeBodyQuizRiassunto() {
    		JLabel [][] riassuntoQuesiti = new JLabel[settings.QuizABFrame.MAX_QUESITO_QUIZ+1][4];
    		/*for (int i=0; i<riassuntoQuesiti.length; i++){
    			riassuntoQuesiti[i][0] = new JLabel(new ImageIcon("imgs/rappresentazioni_grafiche/s"+QuizPatente.quiz[i].segnale+".gif"));
    			riassuntoQuesiti[i][1] = new JLabel(QuizPatente.quiz[i].risposta);
    			riassuntoQuesiti[i][1].setFont(settings.QuizABFrame.fontTxtAreaRiassunto);
    			switch(QuizPatente.risposte_user[i]){
    				case 'N': riassuntoQuesiti[i][2] = new JLabel();
    					 	  riassuntoQuesiti[i][3] = new JLabel();
    					  	  break;
    				case 'V': riassuntoQuesiti[i][2] = new JLabel();
    			 	  		  riassuntoQuesiti[i][3] = new JLabel();
    			 	  		  break;
    				case 'F': riassuntoQuesiti[i][2] = new JLabel();
    			 	  		  riassuntoQuesiti[i][3] = new JLabel();
    			 	  		  break;  
    			}	
    		}
    		riassuntoQuesiti[0][1].setBounds(50, 50, 300, 100);
    		this.getContentPane().add(riassuntoQuesiti[0][1]);*/
    		JLabel bg = new JLabel(new ImageIcon("imgs/quizLayout/bg_riassunto.gif"));
    		bg.setBounds(48, 83, 750, 391);
    		
    		for(int i=1; i<=5; i++){
    			JTextArea ta = new JTextArea();
    			JLabel labV = new JLabel(new ImageIcon("imgs/quizLayout/V.gif"));
    			labV.setBounds(735, (76*i)+9+10, 55, 55);
    			JLabel labF = new JLabel(new ImageIcon("imgs/quizLayout/F.gif"));
    			labF.setBounds(800, (76*i)+9+10, 55, 55);
    			JLabel jla = new JLabel(new ImageIcon("imgs/rappresentazioni_grafiche/miniature/s"+QuizPatente.quiz[i].segnale+".gif"));
    			jla.setBounds(49, (76*i)+9, 75, 75);
    			ta.setText(QuizPatente.quiz[i].risposta);
    			//ta.setBackground(settings.QuizABFrame.sfondo);			
    			ta.setFont(settings.QuizABFrame.fontTxtAreaRiassunto);
    			ta.setForeground(Color.BLACK);
    			ta.setLineWrap(true);
    			ta.setWrapStyleWord(true);
    			ta.setBounds(125, (76*i)+9, 600, 75);
    			ta.setEnabled(false);	
    			this.add(jla);
    			this.add(ta);
    			this.add(labV);
    			this.add(labF);
    		}
    		//this.add(bg);
    				
    		
    	}
    	private void makeFooterQuiz(int index, int minuti, int secondi) {
    		
    		makeAvantiIndietro(index);
    		
    		JLabel []numero_nome = new JLabel[2];
    		numero_nome[0] = new JLabel("Numero Scheda");
    		numero_nome[1] = new JLabel("Nome e Cognome");
    		numero_nome[0].setBounds(220, 485, 100, 20);
    		numero_nome[1].setBounds(220, 530, 100, 20);
    		this.getContentPane().add(numero_nome[0]);
    		this.getContentPane().add(numero_nome[1]);
    		
    		JTextArea []num_nom = new JTextArea[2];
    		num_nom[0] = new JTextArea(" 871");
    		num_nom[1] = new JTextArea(" "+settings.Generali.NOME+" "+settings.Generali.COGNOME);
    		num_nom[0].setBounds(220, 507, 200, 20);		
    		num_nom[1].setBounds(220, 550, 200, 20);
    		num_nom[0].setEnabled(false);
    		num_nom[1].setEnabled(false);
    		num_nom[0].setFont(settings.QuizABFrame.fontNumeroNome);
    		num_nom[1].setFont(settings.QuizABFrame.fontNumeroNome);
    		this.getContentPane().add(num_nom[0]);
    		this.getContentPane().add(num_nom[1]);
    		
    		
    		
    		areaTime = new JTextArea("  :  ");		
    		areaTime.setBounds(settings.QuizABFrame.TIME_LOCATION_X,settings.QuizABFrame.TIME_LOCATION_Y, 
    								settings.QuizABFrame.TIME_AREA_WIDTH, settings.QuizABFrame.TIME_AREA_HIGH);
    		areaTime.setEditable(false);
    		areaTime.setFont(settings.QuizABFrame.fontTime);
    		areaTime.setBorder(settings.QuizABFrame.borderTime);
    		areaTime.setBackground(settings.QuizABFrame.sfondo);
    		this.getContentPane().add(areaTime);
    				
    		this.setLayout(null);		
    		this.setSize(settings.QuizABFrame.dimensione);
           	this.setLocation(settings.QuizABFrame.posizione);
           	this.getContentPane().setBackground(settings.QuizABFrame.sfondo);
           	this.setResizable(false);
           	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
           	this.setTitle("A5R Quiz A/B");
           	this.setVisible(true);
           	resMinuti = minuti;
           	resSecondi = secondi;
           	new SwingWorker<Void, String>() {
    			public Void doInBackground() throws Exception {
    				for (int i = resMinuti; i >= 0; i--){
    					for(int j = resSecondi; j >= 0; j--) {
    						//publish(i);
    						if(i >= 10 && j >= 10)
    							publish(" "+i+":"+j);
    						if(i >= 10 && j < 10)
    							publish(" "+i+":0"+j);
    						if(i < 10 && j >= 10)
    							publish(" 0"+i+":"+j);
    						if(i < 10 && j < 10)
    							publish(" 0"+i+":0"+j);
    						
    						tmpMin = i;
    						tmpSec = j;
    						Thread.sleep(1000);
    					}
    				}
    				return null;
    			}
    			
    			public void process(java.util.List<String> data) {
    				for(String e: data) areaTime.setText("" + e);
    			}
    		}.execute();
           	/*try {
    			for(int i=30; i>0; i--) {
    				Thread.sleep(1000);
    				//System.out.println(i);
    				area.setText(""+i);
    				this.getContentPane().update(this.getGraphics());
    				//this.update(this.getGraphics());				
    			} // for
    		} catch (Exception e) {}*/
    		
    	}
    	
    }
    PS: per questi di spazio ho cancellato una funzione, ma non dovrebbe compromettere la leggibilità del codice.

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    In tutto il codice che hai postato c'è una sola istruzione di modifica del Foreground. Questa:

    codice:
    ta.setForeground(Color.BLACK);
    che, come già detto in precedenza, imposta il colore NERO per il testo. Il colore NERO è quello di default, quindi di fatto non stai cambiando il colore da nessuna parte.

    Che cosa ti aspetti che venga fatto?
    Che cosa, invece, viene fatto realmente?

    C'è una cosa, però, che mi incurioscisce. In tutte le JTextArea imposti il Font in questo modo:

    codice:
    ta.setFont(settings.QuizABFrame.fontTxtAreaRiassunto);
    Io non posso sapere che font tu stia impostando, ma mi auguro che sia un font valido e che non abbia particolarità.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Ciao, ho fatto queste 2 modifiche senza avere alcun risultato:
    codice:
    //ta.setFont(settings.QuizABFrame.fontTxtAreaRiassunto);
    ta.setForeground(Color.RED);
    Questo è il risultato, il colore del testo è sempre di quel verde:



    Ciao e grazie ancora!!!

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Ok... ho visto un'altra cosa, che prima mi era sfuggita:

    codice:
    ta.setEnabled(false);
    Questa istruzione fa sì che la TextArea non sia attiva, quindi il "rendering" viene sovrascritto da quello previsto dal Sistema Operativo.

    O lasci la TextArea attiva (puoi scegliere di non renderla editabile, con setEditable(false) ) oppure non puoi cambiare il colore del testo perchè è il sistema operativo che, in base alle impostazioni che hai deciso tu per il tuo ambiente, visualizza il controllo con le caratteristiche imposte.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Grazie di tutto!!!! Risolto con setEditable()

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.