Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [ale500 pillola2] Calendario in Java

    Salve a tutti, ho appena ultimato il progetto per l'Università in Java, nel da farsi ho dovuto anche creare un calendario per la scelta delle data, so che potrebbe essere una cosa utile per molte persone quindi vi allego parte del mio progetto comprendente


    Calendario.java è la classe vera e propria per la visualizzazione del calendario come interfaccia, il calendario sfrutta inoltre un'altra classe:
    Data.java è una classe a me molto utile per la gestione delle Date in java, basate su java.util.GregorianCalendar e le Date di Java.

    Test.java la vogliamo far pertire questa applicazione si o no


    naturalmente la cosa può essere migliorata ed adattata alle vostre esigenze, io l'ho adattata alle mie...
    Let's your dream came true!

  2. #2
    Bello.
    Ma non era meglio estendere la classe JToggleButton piuttosto che usare tutti quei metodi?
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  3. #3
    beh, senz'altro a livello di codice era veramente più semplice e forse anche più funzionale....

    non ci avevo pensato...
    con estendere intendi estendere la classe JToggleButton ed implementare ad esempio un metodo che veniva gestito automaticamente???

    puoi esser un po più chiaro???
    estendo la classe per implementare cosa di nuovo???

    sai non è molto che faccio java
    Let's your dream came true!

  4. #4
    Fai le stesse operazioni su ogni bottone, quindi tanto vale che
    dichiari un array di bottoni e infili tutte quelle operazioni nel costruttore di una sottoclasse di JToggleButton.
    La sottoclasse sara' all'incirca:

    codice:
       public class MyToggleButton extends JToggleButton {
            
            final int X_SIZE = 35;
            final int Y_SIZE = 35;
            final int X_OFFSET = 16;
            final int Y_OFFSET = 78;
            final int X_SPACING = 1;
            final int Y_SPACING = 1;
            
            final int X_INCREMENT = X_SIZE + X_SPACING;
            final int Y_INCREMENT = Y_SIZE + Y_SPACING;
            
            public MyToggleButton(int number) {
                super();
                setLocation(xpos(number), ypos(number));
                setSize(X_SIZE, Y_SIZE);
                setFont(new java.awt.Font("Tahoma", Font.PLAIN, 12));
                setName(String.valueOf(number+1));
                addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        m_Day = Integer.parseInt(MyToggleButton.this.getText());
                    }
                });
            }
            
            private int xpos(int x) {
                x %= 7;
                return (X_OFFSET + (x * X_INCREMENT));
            }
            
            private int ypos(int y) {
                y/= 7;
                return (Y_OFFSET + (y * Y_INCREMENT));
            }
            
        }
    cosi'...
    Nota la finezza: calcolo la posizione di ogni pulsante in base all'indice.
    Lo stesso vale per le JLabels.
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  5. #5
    perfetto, domani se ho tempo lo integro nel codice...

    adesso ho capito, ero abituato in VB dove gli array di Command venivano creati in automatico, un po di lavoro manuale non fa mai male...
    Let's your dream came true!

  6. #6
    perfetto, domani se ho tempo lo integro nel codice...
    Se vuoi ti posto quello che ho combinato io, cosi' ti evito la fatica. Avevo intenzione di fare qualche piccola modifica, ma poi il tutto ha preso a non funzionare (perche' mischiavo due tipi di pulsante mandando a pallino tutti i metodi che usavano "cmd1.getClass()"...

    ero abituato in VB dove gli array di Command venivano creati in automatico
    Immagino dipenda anche dall'IDE che usi per disegnare l'interfaccia grafica. Ecco perche' preferisco farne a meno.
    Per esempio, per scrivere questa procedura:

    codice:
    	private void changeDays(int FistDayOfWeekOfMonth, int LastDay) {
    		String TabName;
    
    		//nascondo tutti i pulsanti
    		for (int i = 0; i < panel.getComponentCount(); i++) {
    					
    			if (panel.getComponent(i).getClass() == cmd1.getClass())
    				panel.getComponent(i).setVisible(false);
    		}
    
    		//abilito e rinomino soltanto quelli che mi servono
    		for (int j = 1; j <= LastDay; j++) {
    			TabName = String.valueOf(j + FistDayOfWeekOfMonth - 1);
    
    			for (int i = 0; i < panel.getComponentCount(); i++) { 
    				if (panel.getComponent(i).getName() != null) {
    					if (panel.getComponent(i).getName().equals(TabName)) {
    						((JToggleButton) panel.getComponent(i)).setText(String
    								.valueOf(j));
    						panel.getComponent(i).setVisible(true);
    						if (j == m_Day)
    							((JToggleButton) panel.getComponent(i))
    									.setSelected(true);
    					}
    				}
    			}
    		}
    	}
    hai dovuto letteralmente fare i salti mortali!!!
    Riscrivendo il tutto, ottieni:

    codice:
        private void changeDays(int FistDayOfWeekOfMonth, int LastDay) {
            int numero;
            
            //nascondo tutti i pulsanti
            for (int i = 0; i < cmd.length; i++) {
                cmd[i].setVisible(false);
            }
            
            //abilito e rinomino soltanto quelli che mi servono
            for (int j = 1; j <= LastDay; j++) {
                numero = j + FistDayOfWeekOfMonth;
                cmd[numero].setText(String.valueOf(j));
                cmd[numero].setVisible(true);
                if (j == m_Day)
                    cmd[numero].setSelected(true);
            }
        }
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  7. #7
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  8. #8

    Chiedo scusa...

    Ieri sera non mi sono accorto dei vari malfunzionamenti che avevo causato al programma. Ecco la versione corretta (spero)

    codice:
       private void changeDays(int FistDayOfWeekOfMonth, int LastDay) {
            int numero;
            
            //nascondo tutti i pulsanti
            for (int i = 0; i < cmd.length; i++) {
                cmd[i].setVisible(false);
            }
            
            //abilito e rinomino soltanto quelli che mi servono
            for (int j = 0; j < LastDay; j++) {
                numero = j + FistDayOfWeekOfMonth - 1;
                cmd[numero].setText(String.valueOf(j+1));
                cmd[numero].setVisible(true);
                if ((j+1) == m_Day)
                    cmd[numero].setSelected(true);
            }
        }
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  9. #9
    ciao noto che i file non sono più raggiungibili TI PREGO MI SERVONO Devo fare anche io un progetto del genere .

  10. #10
    Messaggi privati ti dice niente?
    Amaro C++, il gusto pieno dell'undefined behavior.

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.