Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 18 su 18
  1. #11
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207
    Purtroppo la soluzione a popup menu non ha soddisfatto in pieno il mio professore, insieme al prof quindi ne abbiamo trovata un'altra...dovrebbe venire una cosa di questo tipo :




    a questo proposito quindi, mi sn dato subito da fare e ho implementato una classe "Cella_giorno" con questo codice :

    codice:
    package interfaccia;
    
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.BorderFactory;
    import javax.swing.BoxLayout;
    import javax.swing.JButton;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    
    public final class Cella_giorno extends JPanel {
    
    	private String giorno;
    	
    	public Cella_giorno(){
    		
    		this.setLayout(new BorderLayout());
    		this.setBorder(BorderFactory.createLineBorder(Color.black));
    		final JButton button1 = new JButton();
    		button1.setBackground(Color.red);
    		button1.setSize(20, 20);
    		button1.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent evt) {
    				
    										
    				}
    			});
    		JButton button2 = new JButton();
    		button2.setBackground(Color.orange);
    		button2.setSize(20, 20);
    		JButton button3 = new JButton();
    		button3.setBackground(Color.yellow);
    		button3.setSize(20, 20);
    		//pannello che contiene i tre bottoni
    		JPanel trebottonipanel = new JPanel();
    		trebottonipanel.setLayout(new FlowLayout());
    		trebottonipanel.add(button1);
    		trebottonipanel.add(button2);
    		trebottonipanel.add(button3);
    		this.add(trebottonipanel, BorderLayout.SOUTH);
    	
    		//pannello che contiene il giorno (L, M etc)
    		JPanel panelgiorno = new JPanel(new BorderLayout());
    		this.add(panelgiorno,BorderLayout.NORTH);
    		
    	}
    	
       public void setGiorno(String giorno){
    		
    		JLabel giornolabel = new JLabel();
    		giornolabel.setText(giorno);
    		giornolabel.setHorizontalAlignment(JLabel.CENTER);
    //		pannello che contiene il giorno (L, M etc)
    		JPanel panelgiorno = new JPanel(new BorderLayout());
    		panelgiorno.add(giornolabel);
    		this.add(panelgiorno,BorderLayout.NORTH);
    	}
    	
    }
    sono però già sorti i primi problemi: il primo problema è che andando ad implementare i listener per i singoli bottoni, mi sn accorto che nel listener nn posso settare il cambiamento del colore di fondo del pannello, infatti se faccio this. nn mi da l'opzione setbackground.

    inoltre andando ad applicare questa classe nel mio pannello principale, il risultato non è stato grankè cm si può vedere nella figura




    cm mai i tasti colorati nn sono venuti di forma quadrata?
    perchè i pannelli con le label mattina,pomeriggio,notte sono venuti così allungati?forse dipende dal layout del pannello in cui sn andato a inserire la classe "Cella_giorno" ? Il layout del pannello bordato di nero (per intenderciquello che comprende le scritte grado di pref, grado di pref del turno giornaliero, e le varie istanze di "Cella_giorno) ha un BoxLayout, mentre a sua volta le varie istanze di "Cella_giorno" sn inserite in un pannello con un gridLayout.

  2. #12
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da jin85
    il primo problema è che andando ad implementare i listener per i singoli bottoni, mi sn accorto che nel listener nn posso settare il cambiamento del colore di fondo del pannello, infatti se faccio this. nn mi da l'opzione setbackground.
    Ehm ... noto che non hai un buon feeling con le inner class.

    Nel actionPerformed il 'this' ovviamente fa riferimento alla istanza della anonymous inner class! Che è una classe che implementa semplicemente ActionListener e non è di certo un JPanel!!!

    Semplicemente metti setBackground(...) senza il this.

    Oppure esiste anche una sintassi apposita per avere, all'interno di una inner class, il 'this' della classe "contenitore", nel tuo caso:

    Cella_giorno.this.setBackground(.....);

    Originariamente inviato da jin85
    cm mai i tasti colorati nn sono venuti di forma quadrata?
    Il tuo setSize() non serve a nulla se per disporre i pulsanti hai usato un layout manager (FlowLayout). Usa setPreferredSize() (FlowLayout almeno rispetta il preferred size).

    E nota che i pulsanti generalmente hanno un margine preimpostato, che in tal caso dovresti azzerare, vedi il metodo setMargin() di JButton.

    Originariamente inviato da jin85
    perchè i pannelli con le label mattina,pomeriggio,notte sono venuti così allungati?
    Perché se hai usato GridLayout, esso non rispetta il "preferred size" dei componenti. Data la dimensione del "contenitore" la divide per il numero di celle, punto.
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #13
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207
    no..infatti nn ho molta dimestichezza con le innerclass

    però ora andbin ti devo porre un quesito..supponiamo di avere questa situazione rappresentata nello screen (nn far caso alle dimensioni dei pannelli colorati..quelle le sistemerò tra un pò )




    Le colorazioni dei vari pannelli mi servono per questo motivo che ora ti espongo:

    ti premetto che per me ogni colore ha un significato che corrisponde ad una preferenza (rosso=2,arancione=1,giallo=0; 2 significa che lo preferisce, 0 significa che nn lo preferisce)

    nel momento in cui il medico "Nicola Giannuzzi"(puoi vedere i nomi a sinistra nella tabbed) ha scelto le sue preferenze (colorando i vari pannelli), io in un file xml devo andare ad inserire queste preferenze relative a quella determinata persona, il file xml quindi sarà di questo tipo:

    codice:
    <PreferenzeGiorni>
         <NomeMedico>Nicola Giannuzzi</NomeMedico>
         <Giorno>Lunedi</Giorno>
         <Priorita>1</Priorita>
    </PreferenzeGiorni>
    <PreferenzeGiorni>
         <NomeMedico>Nicola Giannuzzi</NomeMedico>
         <Giorno>Martedi</Giorno>
         <Priorita>0</Priorita>
    </PreferenzeGiorni>
    <PreferenzeGiorni>
         <NomeMedico>Nicola Giannuzzi</NomeMedico>
         <Giorno>Mercoledi</Giorno>
         <Priorita>2</Priorita>
    </PreferenzeGiorni>
    <PreferenzeGiorni>
         <NomeMedico>Nicola Giannuzzi</NomeMedico>
         <Giorno>Giovedi</Giorno>
         <Priorita>2</Priorita>
    </PreferenzeGiorni>
    <PreferenzeGiorni>
         <NomeMedico>Nicola Giannuzzi</NomeMedico>
         <Giorno>Venerdi</Giorno>
         <Priorita>0</Priorita>
    </PreferenzeGiorni>
    <PreferenzeGiorni>
        <NomeMedico>Nicola Giannuzzi</NomeMedico>
        <Giorno>Sabato</Giorno>
        <Priorita>1</Priorita>
    </PreferenzeGiorni>
    <PreferenzeGiorni>
        <NomeMedico>Nicola Giannuzzi</NomeMedico>
        <Giorno>Domenica</Giorno>
        <Priorita>0</Priorita>
    </PreferenzeGiorni>
    ciò che voglio sapere è come farò a strutturare gli if??cioè tipo dovrò fare

    se (colore = rosso)
    allora associa al medico con nominativo Nicola Giannuzzi priorità 2 per il giorno lunedì

    ma questa cosa come la potrò fare?dato che la jtabbed con i vari nomi è posizionata in un frame, mentre le caselle con i vari colori fanno parte di una classe a se stante..cioè in poche parole nel file xml come farò ad associare ad ogni nominativo le proprie priorità (che corrispondono alle colorazioni scelte) ??questa cosa mi sfugge...

  4. #14
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207
    forse dovrei implementare un metodo getColore nella mia classe "Cella_giorno"

  5. #15
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da jin85
    forse dovrei implementare un metodo getColore nella mia classe "Cella_giorno"
    Sì, sarebbe appropriato mettere un getter ma anche un setter (immagino ovviamente che tu debba salvare lo stato ma anche poterlo caricare!).

    Però sarebbe meglio non gestire il get/set di un "colore" ma bensì di un valore che indica proprio la preferenza.

    Questa proprietà potrebbe quindi essere un int che può avere 3 valori:

    public static final int NON_DESIDERATO = 0;
    public static final int INDIFFERENTE = 1;
    public static final int DESIDERATO = 2;

    public int getPreferenza () { .... }
    public void setPreferenza (int preferenza) { .... }

    Oppure se usi almeno Java 5 puoi sfruttare le "enum":

    public enum Preferenza { NON_DESIDERATO, INDIFFERENTE, DESIDERATO }

    ...
    public Preferenza getPreferenza () { .... }
    public void setPreferenza (Preferenza preferenza) { .... }
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  6. #16
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207
    è un problema che affronterò più in la, quando andrò ad agire sul file xml..quindi magari ti richiederò aiuto su questa cosa..ma cosa intendi per poter caricare lo stato? )

  7. #17
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da jin85
    è un problema che affronterò più in la, quando andrò ad agire sul file xml..quindi magari ti richiederò aiuto su questa cosa..ma cosa intendi per poter caricare lo stato? )
    Questo file xml lo devi solo scrivere o .... anche leggere (cioè caricare tutte le informazioni e poi visualizzarle)???
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  8. #18
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207
    allora...attualmente con il prof siamo rimasti che lo devo solo scrivere...però nn si sa mai..magari si cambia idea..e vuole anche leggerlo...e quindi caricare tutte le informazioni al suo interno..

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