A Cura di Claudio Beghetto Pagina 1 di 59 a cura di Claudio Beghetto SOMMARIO JAVA......................................................................................................................................................................................... 4 CODICE JAVA da compilare e poi RUN ............................................................................................................................................................................................... 6 Ese1 ........................................................................................................................................................................................................................................................ 7 Ese2 ........................................................................................................................................................................................................................................................ 7 Ese3 Ese 3 bis ........................................................................................................................................................................................................................... 8 Ese4 ........................................................................................................................................................................................................................................................ 9 Ese5 ...................................................................................................................................................................................................................................................... 10 Ese 6 ..................................................................................................................................................................................................................................................... 11 Ese 7 ..................................................................................................................................................................................................................................................... 12 Ese 8 ..................................................................................................................................................................................................................................................... 14 Ese 9 ..................................................................................................................................................................................................................................................... 15 Ese 10 ................................................................................................................................................................................................................................................... 16 Ese 11 ................................................................................................................................................................................................................................................... 18 Ese 12 ................................................................................................................................................................................................................................................... 20 Ese 13 ................................................................................................................................................................................................................................................... 20 Ese 14 ................................................................................................................................................................................................................................................... 22 Ese 15 ................................................................................................................................................................................................................................................... 24 Ese 16 ................................................................................................................................................................................................................................................... 25 Ese 17 ................................................................................................................................................................................................................................................... 27 Ese 18 ................................................................................................................................................................................................................................................... 29 Ese 19 Thread1..................................................................................................................................................................................................................................... 31 Ese 20 Genera PWD............................................................................................................................................................................................................................. 34 Ese 21 Scrittura e lettura Ordinata da un File....................................................................................................................................................................................... 36 Ese 22 Ordinamento di un array di stringhe ......................................................................................................................................................................................... 40 Ese 23 Connessione ad un DB ............................................................................................................................................................................................................. 41 APPLET: ................................................................................................................................................................................................................................................. 44 Applet pippo......................................................................................................................................................................................................................................... 45 Applet MuoviRect ................................................................................................................................................................................................................................ 46 Applet lab2.class .................................................................................................................................................................................................................................. 47 Applet lab3.class .................................................................................................................................................................................................................................. 48 Applet Colors ....................................................................................................................................................................................................................................... 51 Pagina 2 di 59 a cura di Claudio Beghetto Applet Temperature.............................................................................................................................................................................................................................. 53 Applet Orologio.................................................................................................................................................................................................................................... 55 Creare un Eseguibile con...................................................................................................................................................................................................................... 57 LIBRERIE............................................................................................................................................................................................................................................ 59 Pagina 3 di 59 a cura di Claudio Beghetto JAVA 1° scaricare JDK e Netbeans 6.5: http://bits.netbean s.org/netbeans/6.5/community/latest/ml/ Ulteriori Info sull’ IDE : NetBeans IDE Java Quick Start Tutorial Pagina 4 di 59 a cura di Claudio Beghetto * Puoi aggiungere o rimuovere i pacchetti più tardi usando il gestore di plug-in dell'IDE (Strumenti | Plug-in). Si richiedono Java 6 o Java 5 per l'installazione e l'esecuzione dei pacchetti PHP, Ruby e C/C++ di NetBeans Puoi scaricare l'ultima versione di Java a java.com. Il JDK 6 o JDK 5 sono richiesti per l'installazione ed esecuzione di Java SE, Java e di tutti i pacchetti di NetBeans. Puoi scaricare il JDK da solo oppure scaricare l'ultimo JDK con il pacchetto Java SE di NetBeans IDE. Puoi anche scaricare NetBeans IDE come parte del pacchetto degli strumenti Java EE 5 o il pacchetto MySQL con GlassFish. Il codice sorgente di NetBeans e le costruzioni di oggetti binari (build) senza i runtime inclusi sono anche disponibili nel formato zip. Vedi anche istruzioni su come costruire l''IDE dai sorgenti o le istruzioni di installazione. 2° Dopo l'installazione: Pagina 5 di 59 a cura di Claudio Beghetto Javaapplication1 CODICE JAVA da compilare e poi RUN package javaapplication1; /** * * @author Claudio Beghetto */ public class Main { /** Main e' salvato come Main.java * @param args the command line arguments */ public static void main(String[] args) { System.out.println("Hello World!"); } } Pagina 6 di 59 a cura di Claudio Beghetto Ese1 Ese 1b package rettangolo; import java.awt.Rectangle; /** * * @author Claudio Beghetto */ public class Main { /** * @param args the command line arguments */ public static void main(String[] args) public class primo { public static void main(String[] args) { int i; for(i=1;i<=5;i++) { System.out.println(" Capitolo --> "+ i ); } } } { Rectangle BoxCereali= new Rectangle(5,10,20,30); BoxCereali.translate(10,250); System.out.println(BoxCereali); } } run: java.awt.Rectangle[x=15,y=260,width=20,height=30] BUILD SUCCESSFUL (total time: 0 seconds) Ese2 package centesimi; /** * * @author */ public class Main { /** *@ */ public static void main(String[] args) { int cent= 10; double totale=cent * 0.50; int euro=5; totale+=euro*20; System.out.print("Valore Totale= "+ totale); } } run: Valore Totale= 105.0 Pagina 7 di 59 a cura di Claudio Beghetto Ese3 Ese 3 bis public class NewClass { public static void main(String[] args) { final int PENNY_VALUE = 1; // final sono le costanti final int NICKEL_VALUE = 5; final int DIME_VALUE = 10; final int QUARTER_VALUE = 25; final int DOLLAR_VALUE = 100; public class Main { int pennies = 8; // il portamonete contiene 8 penny, int nickels = 0; // nessun nickel, int dimes = 4; // quattro dime, int quarters = 3; // e tre quarter /** * @param args the command line arguments */ public static void main(String[] args) { String firstName = "Claudio"; String middleName = "Kid"; String lastName = "Hello"; // calcola il valore totale in penny // estrai le iniziali int total = pennies * PENNY_VALUE + nickels * NICKEL_VALUE + dimes * DIME_VALUE + quarters * QUARTER_VALUE; String initials = firstName.substring(0, 1) + middleName.substring(0, 1) + lastName.substring(0, 1); // usa la divisione (/) fra integer per convertire //i centesimi in dollari // aggiungi l'età int dollar = total / DOLLAR_VALUE; int cents = total % DOLLAR_VALUE; int age = 29; // l'età dell'utente String password = initials.toLowerCase() + age; System.out.print("Valore totale = "); System.out.print(dollar); System.out.print(" dollari e "); System.out.print(cents); System.out.println(" centesimi."); } } run: Valore totale = 1 dollari e 23 centesimi. BUILD SUCCESSFUL (total time: 1 second) Pagina 8 di 59 System.out.println("La tua password e' " + password); } } run: La tua password e' ckh29 BUILD SUCCESSFUL (total time: 0 seconds) a cura di Claudio Beghetto Ese4 package denaro; // Esempio per avere un INPUT import java.io.InputStreamReader; import java.io.BufferedReader ; import java.io.IOException; /** * * @author */ public class NewClass { public static void main(String[] args) { InputStreamReader reader = new InputStreamReader (System.in); BufferedReader myInput = new BufferedReader (reader); String str= new String(); try { System.out.println("Quanti EURO hai?"); str = myInput.readLine(); System.out.println ("Hai scritto: "+ str); } catch (IOException e) { System.out.println ("Si è verificato un errore: " + e); System.exit(-1); } } } run: Quanti EURO hai? 25 Hai scritto: 25 BUILD SUCCESSFUL (total time: 5 seconds) Pagina 9 di 59 a cura di Claudio Beghetto Ese5 public class NewClass2 { public static void main(String[] args) { final double CENT = 0.01; final double CENT5 = 0.05; final double CENT10 = 0.1; final double EURO = 10.00; InputStreamReader reader = new InputStreamReader (System.in); BufferedReader myInput = new BufferedReader (reader); int k; String str= new String(); try { System.out.println("Quanti EURO hai?"); str = myInput.readLine(); k = Integer.parseInt(str); System.out.println ("Hai scritto: "+ k + " = "+ k * EURO); } catch (IOException e) { System.out.println ("Si è verificato un errore: " + e); System.exit(-1); } } } run: Quanti EURO hai? 9 Hai scritto: 9 = 90.0 BUILD SUCCESSFUL (total time: 4 seconds) Pagina 10 di 59 a cura di Claudio Beghetto Ese 6 package pwd; public class BankAcc { public BankAcc() // Costruttore { balance = 0; } package pwd; public class TestBank { public static void main(String[] args) {BankAcc account = new BankAcc(10000); final double INTEREST_RATE = 5; public BankAcc(double initialBalance) { balance = initialBalance; } public void deposit(double amount) { balance = balance + amount; } public void withdraw(double amount) { balance = balance - amount; } public double getBalance() { return balance; } double interest; // calcola e somma gli interessi per un periodo interest = account.getBalance() * INTEREST_RATE / 100; account.deposit(interest); System.out.println("Il saldo dopo 1 anno e' di € " + account.getBalance()); double acc=1000; account.withdraw(acc); System.out.println("Il saldo dopo 1 anno e dopo aver prelevato e' di € " + account.getBalance()); // somma nuovamente gli interessi interest = account.getBalance() * INTEREST_RATE / 100; account.deposit(interest); System.out.println("Il saldo dopo 2 anni e' di € " + account.getBalance()); } private double balance; } } run: Il saldo dopo 1 anno e' di € 10500.0 Il saldo dopo 1 anno e dopo aver prelevato e' di € 9500.0 Il saldo dopo 2 anni e' di € 9975.0 BUILD SUCCESSFUL (total time: 2 seconds) Pagina 11 di 59 a cura di Claudio Beghetto Ese 7 // Scrittura su di un file delle caratteristiche del Sistema in uso nel PC utente public class Sistema { public static void main(String[] arg) { // Cambio lo standard output, uso il file Sistema.txt File outFile=new File("Sistema.txt"); FileOutputStream fw; try {fw=new FileOutputStream(outFile) ;} catch (IOException e) {fw=null;}; PrintStream Output=new PrintStream(fw); System.setOut(Output); // Scrivo sul nuovo standard output: // Tempo: long tempo=System.currentTimeMillis(); System.out.println("Tempo in millisecondi: "+tempo); long t1=tempo/1000; System.out.println("Tempo in secondi: "+t1); long sec=t1%60; long t3=t1/60; long min=t3%60; long t4=t3/60; System.out.println("Tempo in ore h"+t4+" m"+min+" s"+sec); System.out.println("nE' il tempo passato dal 1/1/1970 ad ora.n"); // Proprietà del sistema: System.out.println("nProprieta' del sistema:n"); String tmp; System.out.println("ntJAVAn"); tmp=System.getProperty("java.version "); System.out.println("Versione dell'ambiente di Java Runtime: "+tmp); tmp=System.getProperty("java.vendor"); System.out.println("Distributore dell'ambiente di Java Runtime: "+tmp); tmp=System.getProperty("java.vendor.url"); System.out.println("URL del distributore di Java: "+tmp); tmp=System.getProperty("java.home"); System.out.println("Directory dove e' installato Java: "+tmp); tmp=System.getProperty("java.vm.specification.version"); System.out.println("Versione delle specifiche della Java Virtual Machine: "+tmp); tmp=System.getProperty("java.vm.specification.vendor"); System.out.println("Distributore delle specifiche della Java Virtual Machine: "+tmp); tmp=System.getProperty("java.vm.specification.name"); System.out.println("Nome delle specifiche della Java Virtual Machine: "+tmp); tmp=System.getProperty("java.vm.version"); System.out.println("Versione della implementazione della Java Virtual Machine: "+tmp); tmp=System.getProperty("java.vm.vendor" ); System.out.println("Distributore della implementazione della Java Virtual Machine: "+tmp); tmp=System.getProperty("java.vm.name"); System.out.println("Nome della implementazione della Java Virtual Machine: "+tmp); tmp=System.getProperty("java.specification.version"); Pagina 12 di 59 a cura di Claudio Beghetto System.out.println("Versione dell'ambiente di Java Runtime: "+tmp); tmp=System.getProperty("java.specification.vendor"); System.out.println("Distributore dell'ambiente di Java Runtime Java Runtime: "+tmp); tmp=System.getProperty("java.specification.name" ); System.out.println("Nome dell'ambiente di Java Runtime: "+tmp); System.out.println("ntCLASSIn"); tmp=System.getProperty("java.class.version"); System.out.println("Versione delle classi di Java: "+tmp); tmp=System.getProperty("java.class.path"); System.out.println("Pathname delle classi di Java: "+tmp); System.out.println("ntSISTEMA OPERATIVOn"); tmp=System.getProperty("os.name"); System.out.println("Nome Sistema Operativo: "+tmp); tmp=System.getProperty("os.arch"); System.out.println("Architettura del Sistema Operativo: "+tmp); tmp=System.getProperty("os.version"); System.out.println("Versione del sistema Operativo: "+tmp); tmp=System.getProperty("file.separator"); System.out.println("Separatore di File: "+tmp); tmp=System.getProperty("path.separator"); System.out.println("Separatore di Pathname: "+tmp); tmp=System.getProperty("line.separator"); System.out.println("New Line: "+tmp); System.out.println("ntUTENTEn"); tmp=System.getProperty("user.name"); System.out.println("Account name dell'utente: "+tmp); tmp=System.getProperty("user.home"); System.out.println("Home directory dell'utente: "+tmp); tmp=System.getProperty("user.dir"); System.out.println("Working directory dell'utente: "+tmp); } } Risultato sul file Sistema.txt Tempo in millisecondi: 1245674420046 Tempo in secondi: 1245674420 Tempo in ore h346020 m40 s20 nE' il tempo passato dal 1/1/1970 ad ora.n nProprieta' del sistema:n ntJAVAn Versione dell'ambiente di Java Runtime: null Distributore dell'ambiente di Java Runtime: Sun Microsystems Inc. URL del distributore di Java: http://java.sun.com/ Directory dove e' installato Java: C:\Programmi\Java\jdk1.6.0_13\jre Versione delle specifiche della Java Virtual Machine: 1.0 Etc.etc. Pagina 13 di 59 a cura di Claudio Beghetto Ese 8 // legge all’interno del file indicato nell’URL import java.net.URL; import java.io.*; public class LanciaForm{ public static void main(String[] args) throws Exception { URL PF = new URL("http://www.protezione.info/Index.html"); BufferedReader in = new BufferedReader( new InputStreamReader( PF.openStream())); String inputLine; while ((inputLine = in.readLine()) != null) System.out.println(inputLine); in.close(); } } Risultato della pagina www.protezione.info: run: <HTML> <HEAD> <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1"> <TITLE>Index</TITLE> </HEAd> <center> <BODY background=Index1_BK1_files/gradiente.gif> <br> etc….. Pagina 14 di 59 a cura di Claudio Beghetto Ese 9 import java.awt.*; public class ContEBL extends Frame { Label l1=new Label("Etichetta a Nord",Label.CENTER); Label l2=new Label("Etichetta a Sud",Label.CENTER); Label l3=new Label("Etichetta a Est",Label.CENTER); Label l4=new Label("Etichetta a Ovest",Label.CENTER); Label l5=new Label("Etichetta al Centro",Label.CENTER); public ContEBL() { // uso add, perchè il Frame è una estensione di Window, che a sua // volta estende Container. l1.setBackground(Color.BLUE); l1.setForeground(Color.YELLOW); l2.setBackground(Color.RED); l2.setForeground(Color.YELLOW); l3.setBackground(Color.green); l3.setForeground(Color.BLUE); l4.setBackground(Color.yellow); l4.setForeground(Color.blue); l5.setBackground(Color.white); l5.setForeground(Color.blue); setLayout(new BorderLayout()); add(l1,BorderLayout.NORTH); add(l2,BorderLayout.SOUTH); add(l3,BorderLayout.EAST); add(l4,BorderLayout.WEST); add(l5,BorderLayout.CENTER); pack(); setVisible(true); } public static void main(String [] arg) { new ContEBL(); } } Pagina 15 di 59 a cura di Claudio Beghetto Ese 10 //vettore classico class Vett { static int NOME = 0; static int COGNOME = 1; static int PAPERINO=0; static int GAMBA=1; static int Q1=2; static int Q2=3; static int Q3=4; static int CICCIO=5; static int COMM=6; static int TOPO=7; static int PIPPO=8; static int CANE=9; static int PAPERA=10; static int PAPERONE=11; static String personaggi[][] = { {"Paolino","Paperino"}, {"Pietro","Gambadilegno"}, {"QUI","Non Specificato"}, {"QUO","Non Specificato"}, {"QUA","Non Specificato"}, {"Ciccio","Di Nonna Papera"}, {"Non Specificato","Basettoni"}, {"Non Specificato","Topolino"}, {"Pippo","Non Specificato"}, {"Pluto","Non Specificato"}, {"Non Specificato","Paperina"}, {"Non Specificato","Paperone"}, }; public static void main(String [] a) { int PersonaggioTmp; int Numero=1; System.out.println ("Alcuni Personaggi della Walt Disney"); PersonaggioTmp=PAPERINO; System.out.println("Numero:"+Numero+"\tNome:"+personaggi[PersonaggioTmp][NOME]+" Cognome:"+personaggi[PersonaggioTmp][COGNOME]); Numero=Numero+1; PersonaggioTmp=GAMBA; System.out.println("Numero:"+Numero+"\tNome:"+personaggi[PersonaggioTmp][NOME]+" Cognome:"+personaggi[PersonaggioTmp][COGNOME]); Numero=Numero+1; PersonaggioTmp=Q1; System.out.println("Numero:"+Numero+"\tNome:"+personaggi[PersonaggioTmp][NOME]+" Cognome:"+personaggi[PersonaggioTmp][COGNOME]); Numero=Numero+1; PersonaggioTmp=Q2; System.out.println("Numero:"+Numero+"\tNome:"+personaggi[PersonaggioTmp][NOME]+" Cognome:"+personaggi[PersonaggioTmp][COGNOME]); Numero=Numero+1; Pagina 16 di 59 a cura di Claudio Beghetto PersonaggioTmp=Q3; System.out.println("Numero:"+Numero+"\tNome:"+personaggi[PersonaggioTmp][NOME]+" Cognome:"+personaggi[PersonaggioTmp][COGNOME]); Numero=Numero+1; PersonaggioTmp=CICCIO; System.out.println("Numero:"+Numero+"\tNome:"+personaggi[PersonaggioTmp][NOME]+" Cognome:"+personaggi[PersonaggioTmp][COGNOME]); Numero=Numero+1; PersonaggioTmp=COMM; System.out.println("Numero:"+Numero+"\tNome:"+personaggi[PersonaggioTmp][NOME]+" Cognome:"+personaggi[PersonaggioTmp][COGNOME]); Numero=Numero+1; PersonaggioTmp=CANE; System.out.println("Numero:"+Numero+"\tNome:"+personaggi[PersonaggioTmp][NOME]+" Cognome:"+personaggi[PersonaggioTmp][COGNOME]); Numero=Numero+1; PersonaggioTmp=PIPPO; System.out.println("Numero:"+Numero+"\tNome:"+personaggi[PersonaggioTmp][NOME]+" Cognome:"+personaggi[PersonaggioTmp][COGNOME]); Numero=Numero+1; PersonaggioTmp=PAPERONE; System.out.println("Numero:"+Numero+"\tNome:"+personaggi[PersonaggioTmp][NOME]+" Cognome:"+personaggi[PersonaggioTmp][COGNOME]); Numero=Numero+1; PersonaggioTmp=TOPO; System.out.println("Numero:"+Numero+"\tNome:"+personaggi[PersonaggioTmp][NOME]+" Cognome:"+personaggi[PersonaggioTmp][COGNOME]); System.out.println("Ho contato "+Numero+" personaggi, ne erano molti di più!"); // Questo si che è davvero un programma inutile! L'autore. } } run: Alcuni Personaggi della Walt Disney Numero:1 Nome:Paolino Cognome:Paperino Numero:2 Nome:Pietro Cognome:Gambadilegno Numero:3 Nome:QUI Cognome:Non Specificato Numero:4 Nome:QUO Cognome:Non Specificato Numero:5 Nome:QUA Cognome:Non Specificato Numero:6 Nome:Ciccio Cognome:Di Nonna Papera Numero:7 Nome:Non Specificato Cognome:Basettoni Numero:8 Nome:Pluto Cognome:Non Specificato Numero:9 Nome:Pippo Cognome:Non Specificato Numero:10 Nome:Non Specificato Cognome:Paperone Numero:11 Nome:Non Specificato Cognome:Topolino Ho contato 11 personaggi, ne erano molti di più! Pagina 17 di 59 a cura di Claudio Beghetto Ese 11 import java.io.*; import java.util.Calendar; class libri { public int dataP; public String Autore=new String(); int prezzo; // costruttore public libri(int annodiPubb, String Aut, int pz) { dataP=annodiPubb; this.Autore=Aut; prezzo=pz; } int eta; // Funzione che calcola l'età ; public int calcolaAnnoUscita ( int annoattuale ) { eta= annoattuale - dataP ; System.out.println("Il libro e' uscito da.." + eta + " anni - Autore : " + this.Autore); return (eta); } public int calcolaPrezzo ( int pz ) { int prezzoIvato; prezzoIvato= (pz *20/100) +pz ; System.out.println("Il prezzo del libro e' di.." + prezzoIvato + " euro con iva"); return (prezzoIvato); } public static void main (String[] args) throws IOException { //Definizione dello "standard input stream" BufferedReader lettore = new BufferedReader(new InputStreamReader(System.in)); // crea due variabili chiamate "messaggio, Cogn" per l'input String messaggio,Aut; int pz; //int cifra ; System.out.print("Introduci il Titolo: "); //azzera il buffer, prima del test di input System.out.flush(); messaggio=lettore.readLine(); System.out.print("Il tuo libro "); System.out.println("preferito e' : "+ messaggio); System.out.println("Metti AnnoPubblicazione"); System.out.flush(); Pagina 18 di 59 a cura di Claudio Beghetto int Data = Integer.parseInt(lettore.readLine()); System.out.println("Metti l'Autore"); System.out.flush(); Aut = lettore.readLine(); System.out.println("Metti il Prezzo in euro"); System.out.flush(); pz = Integer.parseInt(lettore.readLine()); libri Libro= new libri(Data,Aut,pz); Libro.Autore=Aut; Libro.prezzo=pz; java.util.GregorianCalendar gc = new java.util.GregorianCalendar(); int anno = gc.get(gc.YEAR); Libro.calcolaAnnoUscita(anno); Libro.calcolaPrezzo(pz); } } run: Introduci il Titolo: JAVA E NETBEANS Il tuo libro preferito e' : JAVA E NETBEANS Metti AnnoPubblicazione 2008 Metti l'Autore CLAUDIO Metti il Prezzo in euro 20 Il libro e' uscito da..1 anni - Autore : CLAUDIO Il prezzo del libro e' di..24 euro con iva ------------------------------------------------------------------------ Pagina 19 di 59 a cura di Claudio Beghetto Ese 12 import java.util.Random; public class Dice { public static void main(String[] args) { Random generator = new Random(); // getta il dado dieci volte for (int i = 1; i <= 10; i++) { int d = 1 + generator.nextInt(6); System.out.print(d + " "); } System.out.println(); } } run: 5463564521 Ese 13 public class Table2 { public static void main(String[] args) { final int COLUMN_WIDTH = 10; int[][] powers = new int[10][8]; for (int i = 0; i < 10; i++) for (int j = 0; j < 8; j++) powers[i][j] = (int)Math.pow(i + 1, j + 1); printTable(powers, COLUMN_WIDTH); } /** Stampa un array bidimensionale di valori double @param table i valorida stampare @param width la larghezza della colonna */ public static void printTable(int[][] table, int width) { for (int i = 0; i < table.length; i++) { for (int j = 0; j < table[i].length; j++) { System.out.print(format(table[i][j], width)); } System.out.println(); } } /** Formatta un numero intero in modo che si adatti a un campo di larghezza costante Pagina 20 di 59 a cura di Claudio Beghetto @param n l'intero da formattare @param width la largheza del campo @return una stringa larga width, formata da spazi iniziali seguiti dal numero n */ public static String format(int n, int width) { String nstr = "" + n; // riempie con spazi while (nstr.length() < width) nstr = " " + nstr; return nstr; } } Run ( in realta’ la formattazione dei numeri e’ perfetta): 1 1 1 1 1 1 1 1 2 4 8 16 32 64 128 256 3 9 27 81 243 729 2187 6561 4 16 64 256 1024 4096 16384 65536 5 25 125 625 3125 15625 78125 390625 6 36 216 1296 7776 46656 279936 1679616 7 49 343 2401 16807 117649 823543 5764801 8 64 512 4096 32768 262144 2097152 16777216 9 81 729 6561 59049 531441 4782969 43046721 10 100 1000 10000 100000 1000000 10000000 100000000 Pagina 21 di 59 a cura di Claudio Beghetto Ese 14 public class TreeTest { public static void main(String[] args) { Tree staff = new Tree(); staff.insert("Romeo"); staff.insert("Juliet"); staff.insert("Tom"); staff.insert("Dick"); staff.insert("Harry"); staff.print(); } } /** Questa classe implementa un albero binario di ricerca i cui nodi contengono oggetti che implementano l'interfaccia Comparable. */ class Tree { /** Costruisce un albero vuoto. */ public Tree() { root = null; } /** Inserisce un nuovo nodo nell'albero. @param obj l'oggetto da inserire */ public void insert(Comparable obj) { Node newNode = new Node(); newNode.data = obj; newNode.left = null; newNode.right = null; if (root == null) root = newNode; else root.insertNode(newNode); } /** Stampa il contenuto dell'albero in successione ordinata. */ public void print() { if (root != null) root.printNodes(); } private Node root; private class Node { /** Inserisce un nuovo nodo come discendente di questo nodo. Pagina 22 di 59 a cura di Claudio Beghetto @param newNode il nodo da inserire */ public void insertNode(Node newNode) { if (newNode.data.compareTo(data) < 0) { if (left == null) left = newNode; else left.insertNode(newNode); } else { if (right == null) right = newNode; else right.insertNode(newNode); } } /** Stampa questo nodo e tutti i suoi discendenti in successione ordinata. */ public void printNodes() { if (left != null) left.printNodes(); System.out.println(data); if (right != null) right.printNodes(); } public Comparable data; public Node left; public Node right; } } run: Dick Harry Juliet Romeo Tom Pagina 23 di 59 staff.insert("Romeo"); staff.insert("Juliet"); staff.insert("Tom"); staff.insert("Dick"); staff.insert("Harry"); a cura di Claudio Beghetto Ese 15 import java.io.*; public class PrezziNuovi { public static void main(String[] args)throws IOException { int mioVettore[]=new int[10]; int mioVett[]=new int[10]; mioVett[0]=100; mioVett[1]=200; mioVett[2]=300; mioVett[3]=400; mioVett[4]=500; mioVett[5]=600; BufferedReader lettore = new BufferedReader(new InputStreamReader(System.in)); for(int i=0;i<=5;i++) { System.out.println("Metti i vecchi Prezzi, max. 1000"); System.out.flush(); int Cifra = Integer.parseInt(lettore.readLine()); mioVettore[i]=Cifra; } System.out.println("----------------------"); for(int i=0;i<=5;i++) System.out.println(mioVettore[i]); System.out.println("----------------------"); System.out.println("-------I nuovi prezzi sono ora------------"); for(int i=0;i<=5;i++) System.out.println(mioVettore[i]+ mioVett[i]); System.out.println("----------------------"); } } run: Metti i vecchi Prezzi, max. 1000 100 Metti i vecchi Prezzi, max. 1000 200 Metti i vecchi Prezzi, max. 1000 300 Metti i vecchi Prezzi, max. 1000 400 Metti i vecchi Prezzi, max. 1000 500 Metti i vecchi Prezzi, max. 1000 600 ---------------------- Pagina 24 di 59 100 200 300 400 500 600 -----------I nuovi prezzi sono ora-----------200 400 600 800 1000 1200 ------ a cura di Claudio Beghetto Ese 16 * * Moto.java */ /** * con Javadoc da qui si estraggono le informazioni sul programma,notare in alto *i doppi asterischi *Static sta ad intendersi come "Metodo di Classe", il compilatore non prende in considerazione nessun oggetto nel main ( se non Moto1 e i suoi metodi) se *le classi sono prive della parola chiave "static". *String va scritto con la S maiuscola, e' una classe. * @author clb */ public class Moto1 { public void rumore() { System.out.println("BRRRRROWWWWWWW!"); } public void cilindri(int n) { int c=n/2; System.out.println(c); } static class Ducati extends Moto1 { public void rumore() { System.out.println("UHMMMMMMMMMMMMRRRR!"); } } static class Bmw extends Moto1 { public void rumore(String rum) { System.out.println(rum); } public void frecce() { System.out.println("bip..bip"); } } static class Aprilia extends Moto1 { public void cilindri(int n) { System.out.println(n); super.cilindri(n); } Pagina 25 di 59 a cura di Claudio Beghetto } static class Honda extends Moto1 { } // utilizza tutti i metodi della superclasse Moto1 public static void main(String[] args) { String rumor="bopbup..buuup"; Moto1 mm0 =new Moto1.Ducati(); Moto1.Bmw mm1=new Moto1.Bmw(); Moto1 mm2=new Moto1.Honda(); Moto1 mm3=new Moto1.Aprilia(); mm0.rumore(); mm1.rumore(rumor); mm1.frecce(); mm2.rumore(); mm3.cilindri(4); } // fine Main }//fine superclasse Moto1 run: UHMMMMMMMMMMMMRRRR! bopbup..buuup bip..bip BRRRRROWWWWWWW! 4 2 Pagina 26 di 59 a cura di Claudio Beghetto Ese 17 import java.io.*; import java.util.Calendar; class studenti { public int annonascita; public String Cognome=new String(); // costruttore public studenti(int annodinascita, String Cognome) { annonascita=annodinascita; this.Cognome=Cognome; } int eta; // Funzione che calcola l'et� ; public int calcolaeta ( int annoattuale ) { eta= annoattuale - annonascita ; System.out.println("Hai la bellezza di anni.." + eta + "-" + this.Cognome); return (eta); } public static void main (String[] args)throws IOException { //Definizione dello "standard input stream" BufferedReader lettore = new BufferedReader(new InputStreamReader(System.in)); // crea due variabili chiamate "messaggio, Cogn" per l'input String messaggio,Cogn; //int cifra ; System.out.print("Introduci il messaggio: "); //azzera il buffer, prima del test di input System.out.flush(); messaggio=lettore.readLine(); System.out.print("Tu "); System.out.println("hai scritto: "+ messaggio); System.out.println("Metti AnnoNascita"); System.out.flush(); int Cifra = Integer.parseInt(lettore.readLine()); System.out.println("Metti il Cognome"); System.out.flush(); Cogn = lettore.readLine(); studenti Claudio= new studenti(Cifra,Cogn); Claudio.Cognome=Cogn; Pagina 27 di 59 a cura di Claudio Beghetto java.util.GregorianCalendar gc = new java.util.GregorianCalendar(); int anno = gc.get(gc.YEAR); Claudio.calcolaeta(anno); } } run: Introduci il messaggio: Ciao a TUTTI Tu hai scritto: Ciao a TUTTI Metti AnnoNascita 1980 Metti il Cognome Bimbo Hai la bellezza di anni..29-Bimbo Pagina 28 di 59 a cura di Claudio Beghetto Ese 18 //Scrivere una classe che simuli il lancio di un dado con sei facce. */ public class dado { //la classe dado non ha variabili di classe n� variabili di istanza //esse non sono necessarie perch� un dado non deve avere "memoria" dei numeri che sono stati estratti in precedenza //Tale classe ha solo procedure // //per tale motivo non c'� alcun motivo di introdurre un costruttore esplicito della classe //per usare la classe (purch� essa sia nella stessa directory di una altra classe o nel suo classpath) //basta invocare il metodo dado.lancia() // //il comportamento � dunque simile a quello della classe Math public static void main(String[] args) { //Il main � davvero semplice e serve solo a scopo di controllo //per controllare se gli altri metodi della classe funzionano //per questo motivo non prevede alcuna sofisticata interfaccia del tipo JOptionPane //esso viene eseguito solo se la classe dado � chiamata direttamente con: java dado //altrimenti non viene attivato e non � necessario alla funzionalit� dell'oggetto System.out.println( "Lanciando il dado � uscita la faccia con il numero "+lancia()); } public static int lancia() { // questo metodo simula il lancio vero e proprio //lo dichiaro public per potere usare un vero dado //quando user� questo programma come oggetto da altre classi return (int)(Math.random()*6)+1; } } Pagina 29 di 59 a cura di Claudio Beghetto import javax.swing.JOptionPane; public class esercizio_1_2 { // i metodi di questa classe possono ridursi al solo main perch� tutte le operazioni sono state chiuse nella classe dado public static void main(String[] args) { //il main si limita a chiamare il metodo "gioco" //che contiene tutto il meccanismo //Perchè mettere tutto in un altro emtodo e non nel main? //perch� cos� la classe sar� meglio utilizzabile per i successivi esercizi gioco(); System.exit(0); } public static int gioco() { // Il metodo restituisce 1 se vince il giocatore, 0 se vince il computer //poiché la classe dado non ha variabili di classe //o variabili di istanza, non è necessario invocare per essa il metodo costruttore // sufficiente chiamarla //se dado.class nella stessa directory di esercizio_1_2 o visibile dal classpath //essa fornir i servizi richiesti e cio il lancio del dado int primoNumero=dado.lancia(); int secondoNumero=dado.lancia(); int terzoNumero=dado.lancia(); int totale=primoNumero+secondoNumero+terzoNumero; //chiamo un metodo che gestisce l'output notificaEsito(totale,primoNumero,secondoNumero,terzoNumero); if (totale<=12) return 0; else return 1; } public static void notificaEsito(int punteggio, int num1, int num2, int num3) { String esito; if (punteggio<=12) esito="perso : ("; else esito="vinto : )"; //ed ecco la notifica JOptionPane.showMessageDialog(null, "Lanciando il primo dado è uscita la faccia \n con il numero "+num1+"\n"+ "Lanciando il secondo dado è uscita la faccia \n con il numero "+num2+"\n"+ "Lanciando il terzo dado è uscita la faccia \n con il numero "+num3+"\n"+ "Hai totalizzato "+punteggio+" punti e hai "+esito); } Pagina 30 di 59 } a cura di Claudio Beghetto Ese 19 Thread1 Come creare un Thread Ci sono, fondamentalmente, due metodi per creare un thread in Java. Quello che ci sentiamo di consigliare, soprattutto per la sua struttura Object Oriented, è basato sul seguente costruttore: public Thread (Runnable target) ovvero fa uso di un parametro di tipo Runnable, che costituisce la classe che si desidera esegua del codice in modo indipendente dal processo che la manda in esecuzione. Runnable è un'interfaccia che contiene il seguente metodo void run() che dovrà, pertanto, essere implementato dalla classe da "dare in pasto" al costruttore del thread. Vediamo un esempio per chiarire meglio quanto detto: Come si può osservare, il main() crea un'istanza r della classe SimpleRunner. Tale istanza avrà accesso ai propri dati che, in questo caso, sono rappresentati semplicemente dalla variabile intera i. Poiché l'istanza r viene passata al costruttore della classe Thread, si evince che la variabile i rappresenterà il dato sul quale opererà il thread t quando andrà in esecuzione. Ogni thread inizia sempre attraverso l'invocazione del metodo run() dell'istanza di tipo Runnable che il thread stesso carica in fase di costruzione (nel nostro esempio r). Il metodo run(), a sua volta, viene invocato quando si effettua una chiamata al metodo start() del thread. Un ambiente di programmazione multithread consente di creare più thread basati sulla medesima istanza di tipo Runnable. public class SimpleThread { public static void main(String[] args) { SimpleRunner r = new SimpleRunner(); SimpleRunner2 r2 = new SimpleRunner2(); Thread t = new Thread(r); t.setName("Mio Thread"); t.setPriority(8); t.start(); System.out.println(t); Thread t2 = new Thread(r2); t2.setName("Thread2"); t.setPriority(3); t2.start(); System.out.println(t2); } static class SimpleRunner implements Runnable { int i; public void run() Pagina 31 di 59 a cura di Claudio Beghetto { i = 0; while (true) { System.out.println(); System.out.println("****** Sono nel Primo Thread ******" + i++); if ( i == 20) { break; } } } } static class SimpleRunner2 implements Runnable { int i2; public void run() { i2 = 0; while (true) { System.out.println(); System.out.println("+++++ Sono nel secondo Thread ++++" + i2++); if ( i2 == 20) { // System.out.println(i+i2); break; } } } } } run: Thread[Mio Thread,8,main] Thread[Thread2,5,main] +++++ Sono nel secondo Thread ++++0 +++++ Sono nel secondo Thread ++++1 +++++ Sono nel secondo Thread ++++2 +++++ Sono nel secondo Thread ++++3 +++++ Sono nel secondo Thread ++++4 +++++ Sono nel secondo Thread ++++5 +++++ Sono nel secondo Thread ++++6 +++++ Sono nel secondo Thread ++++7 +++++ Sono nel secondo Thread ++++8 +++++ Sono nel secondo Thread ++++9 Pagina 32 di 59 a cura di Claudio Beghetto +++++ Sono nel secondo Thread ++++10 +++++ Sono nel secondo Thread ++++11 +++++ Sono nel secondo Thread ++++12 ****** Sono nel Primo Thread ******0 ****** Sono nel Primo Thread ******1 ****** Sono nel Primo Thread ******2 ****** Sono nel Primo Thread ******3 ****** Sono nel Primo Thread ******4 ****** Sono nel Primo Thread ******5 ****** Sono nel Primo Thread ******6 ****** Sono nel Primo Thread ******7 +++++ Sono nel secondo Thread ++++13 +++++ Sono nel secondo Thread ++++14 +++++ Sono nel secondo Thread ++++15 +++++ Sono nel secondo Thread ++++16 +++++ Sono nel secondo Thread ++++17 +++++ Sono nel secondo Thread ++++18 +++++ Sono nel secondo Thread ++++19 ****** Sono nel Primo Thread ******8 ****** Sono nel Primo Thread ******9 ****** Sono nel Primo Thread ******10 ****** Sono nel Primo Thread ******11 ****** Sono nel Primo Thread ******12 ****** Sono nel Primo Thread ******13 ****** Sono nel Primo Thread ******14 ****** Sono nel Primo Thread ******15 ****** Sono nel Primo Thread ******16 ****** Sono nel Primo Thread ******17 ****** Sono nel Primo Thread ******18 ****** Sono nel Primo Thread ******19 Pagina 33 di 59 a cura di Claudio Beghetto Ese 20 Genera PWD package pwd; import javax.swing.JOptionPane; /** * * @author Claudio Beghetto */ public class CreaPWD { public static void main(String[] args) { GenNum g = new GenNum(); GenPwd gp=new GenPwd(); JOptionPane.showMessageDialog(null, "Ciao, Genero le Password" ); for(int i=1;i<=5;i++) { //g.stampa(); gp.stampaPwd(); } } static class GenNum { void stampa() { int n=genera(); // allineo numero a dx. if(n<100) System.out.print(" "); if(n<10) System.out.print(""); System.out.println(n); } int genera() { return genera(100); } int genera(int range) { double d=Math.random() * range +1; return (int)d; } int genera(boolean negativo) { if (negativo) return - genera(); else return genera(); } } static class GenPwd extends GenNum Pagina 34 di 59 a cura di Claudio Beghetto { void stampaPwd() { System.out.println("--> "+ generaPWD()); } String generaPWD() { String pwd=""; double d=Math.random() * 100 +1; for(int i=1;i<=6;i++) { pwd +=generaCaratteri(); } String p=pwd +(int)d; return p; } char generaCaratteri() { final int codPrimaLettera='a'; final int codUltimaLettera='z'-'a'+1; int i=codPrimaLettera+(genera(codUltimaLettera))+1; return (char)i; } } }/* run: --> pdssju26 --> eg{lpn17 --> hmlxiu80 --> ftxcol31 --> {rspyu78 */ Pagina 35 di 59 a cura di Claudio Beghetto Ese 21 Scrittura e lettura Ordinata da un File package pwd; import java.io.*; import java.util.*; import java.lang.*; import java.util.logging.Level; import java.util.logging.Logger; class file { RandomAccessFile _File; String Url = "Dati.txt"; // Metodo per l'apertura o la creazione del file. public void Apertura (String Metodo) { try { _File = new RandomAccessFile(Url, Metodo); }catch (IOException e) { System.out.println("Problema nell'apertura del file."); } } // Metodo di scrittura all'interno del file. public String Scrittura (String dato) { try { long Dim = _File.length(); _File.seek(Dim); _File.writeBytes(dato); }catch (IOException e) { System.out.println("Problema nella scrittura sul file."); } return dato; } void Chiusura() { try { _File.close(); } catch (IOException e) { System.out.println("Problema nella chiusura del file."); } } } Pagina 36 di 59 a cura di Claudio Beghetto // Metodo per l'ordinamento dei dati nel file. class SortFile { public SortedSet set = new TreeSet(); SortFile() { // Creo una lista ordinata // Leggo il file try { BufferedReader in = new BufferedReader(new FileReader("Dati.txt")); String str; while ((str = in.readLine()) != null) { // Aggiungo la riga alla lista set.add(str); set.comparator(); str.compareTo(str); } in.close(); } catch (IOException e) { } // Iterazione degli elementi della lista Iterator it = set.iterator(); while (it.hasNext()) { // Ottengo e stampo gli elementi Object element = it.next(); System.out.println(element); } } } class dato { long Dim_random = 25; String Cognome, Nome; char Sesso; int Et=1; // Metodo nuovo. public void Nuovo(String cognome, char sesso, int et) { this.Cognome = cognome; //this.Nome = nome; this.Sesso = sesso; this.Et = et; } // Medoto per la concatenazione della stringa. public String Unione (String cognome, char sesso, int et) { String Concatenata = cognome + ";" + sesso + ";" + et+"\n"; return Concatenata; } Pagina 37 di 59 a cura di Claudio Beghetto // Metodo per ridimensionare la stringa secondo una dimensione random. public String Ridimensiona (String dato) { int i, dim = dato.length(); for (i = dim; i < Dim_random; i++) dato+="*"; return dato; } } public class ordinafile { // Metodo main. public static void main(String[] args) { String cognome="",sesso_temp=""; char sesso; int et=1, ripeti = 1; Scanner Tast = new Scanner(System.in); file obj = new file(); dato obj1 = new dato(); BufferedReader lettore = new BufferedReader(new InputStreamReader(System.in)); while (ripeti != 0) { try { System.out.print("Cognome: \n"); System.out.flush(); cognome = lettore.readLine(); System.out.print("Sesso: \n"); System.out.flush(); sesso_temp = lettore.readLine(); System.out.print("Età: \n"); System.out.flush(); et =Integer.parseInt(lettore.readLine()); } catch (IOException ex) { Logger.getLogger(ordinafile.class.getName()).log(Level.SEVERE, null, ex); } //cognome = Tast.nextLine(); //System.out.print("Nome: \n"); nome = Tast.nextLine(); //System.out.print("Sesso: \n"); sesso_temp = Tast.nextLine(); //System.out.print("Età: \n"); et = Tast.nextInt(); sesso = sesso_temp.charAt(0); obj1.Nuovo(cognome, sesso, et); String Stringa = obj1.Unione(cognome, sesso, et); obj1.Ridimensiona(Stringa); obj.Apertura("rwd"); obj.Scrittura(Stringa); obj.Chiusura(); System.out.println("1 = Continua l'inserimento; 0 = Ferma e visualizza tutto:"); ripeti = Tast.nextInt(); } SortFile sort=new SortFile(); } } Pagina 38 di 59 a cura di Claudio Beghetto run: Cognome: Bianchi Sesso: M Età: 25 1 = Continua l'inserimento; 0 = Ferma e visualizza tutto: 1 Cognome: Belli Sesso: F Età: 18 1 = Continua l'inserimento; 0 = Ferma e visualizza tutto: 1 Cognome: Rossi Sesso: M Età: 35 1 = Continua l'inserimento; 0 = Ferma e visualizza tutto: 0 Belli;F;18 Bianchi;M;25 Rossi;M;35 Pagina 39 di 59 a cura di Claudio Beghetto Ese 22 Ordinamento di un array di stringhe package pwd; /** * * @author Claudio Beghetto */ public class SortString { // A bubble sort for Strings. static String arr[] = { "ieri", "thè", "tempo", "fine", "aglio", "giallo", "mento", "troppo", "come", "topo", "taglio", "albero", "oro", "raso", "città" }; public static void main(String args[]) { for(int j = 0; j < arr.length; j++) { System.out.println("Prima.."+arr[j]); } for(int j = 0; j < arr.length; j++) { for(int i = j + 1; i < arr.length; i++) { if(arr[i].compareTo(arr[j]) < 0) { String t = arr[j]; arr[j] = arr[i]; arr[i] = t; } } System.out.println("ORA.." + arr[j]); } } } Pagina 40 di 59 a cura di Claudio Beghetto Ese 23 Connessione ad un DB import java.sql.*; public class Conn2 { private static Connection con; private static Statement st; private static ResultSet rs; private static int nomeCol; private static int ruoloCol; public static void main(String arg[]) { try { // aggancio il driver Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundException e) { System.out.println("Driver non trovato"); System.exit(0); } try { // mi connetto al DB Squadre tramite il driver jdbc:odbc < String dbURL = "jdbc:odbc:squadre"; // gli passiamo jdbc:odbc:squadre con = DriverManager.getConnection(dbURL); } catch(SQLException sql) { System.out.println("Errore connessione"); System.exit(0); } Pagina 41 di 59 a cura di Claudio Beghetto try { // avviso che sto creando un recordset st = con.createStatement(); } catch(SQLException s) { System.out.println("Errore creazione Recordset"); } try { // Query di selezione rs = st.executeQuery("SELECT Nome,Ruolo FROM Giocatori ORDER BY Nome"); } catch(SQLException esql) { System.out.println("Errore esecuzione Query"); } try { // individuo numericamente la colonna della tabella che // m'interessa Nome e Ruolo tabella Giocatori nomeCol = rs.findColumn("Nome"); ruoloCol = rs.findColumn("Ruolo"); } catch(SQLException a) { System.out.println("Errore ricerca colonne"); } try { while(rs.next()) System.out.println(rs.getString(nomeCol)+ " - "+ rs.getString(ruoloCol)); } catch(SQLException as) { System.out.println("Errore selezione dati"); } try { // quando ho finito chiudo prima il recordset // poi la connessione st.close(); con.close(); } catch(SQLException ad) { System.out.println("Errore chiusura DataBase"); } } } Pagina 42 di 59 a cura di Claudio Beghetto run: Buffon - Portiere Del Piero - Attaccante Gattuso - Libero Gilardino - Attaccante Ibra - Attaccante Kaka - Attaccante Maldini - Difensore Materazzi - Difensore Montella - Attaccante Totti - Attaccante Pagina 43 di 59 a cura di Claudio Beghetto APPLET: New Project New File: pippo Pagina 44 di 59 a cura di Claudio Beghetto Applet pippo import java.awt.*; import java.applet.*; /* <applet code="pippo width=200 height=60> </applet> */ public class pippo extends Applet { public void paint(Graphics g) { g.drawString("Un'applet di prova", 20, 20); } } Pagina 45 di 59 a cura di Claudio Beghetto Applet MuoviRect import import import import java.applet.Applet; java.awt.Graphics; java.awt.Graphics2D; java.awt.Rectangle; public class MuoviRect extends Applet { { public void paint(Graphics g) // ristabilisci il riferimento a Graphics2D Graphics2D g2 =(Graphics2D) g; // costruisci un rettangolo e disegnalo Rectangle cerealBox = new Rectangle(50, 50, 20, 30); g2.draw(cerealBox); // sposta il rettangolo orizzontalmente di 35 unità, e in basso di 25 unità cerealBox.translate(35, 25); // disegna il rettangolo nella nuova posizione g2.draw (cerealBox); g2.fill(cerealBox); } } Pagina 46 di 59 a cura di Claudio Beghetto Applet lab2.class * * @ */ import java.applet.*; import java.awt.Graphics; import java.awt.Color; public class lab2 extends Applet { StringBuffer buffer; public void init() { buffer = new StringBuffer(); addItem("inizializzo... "); } public void destroy() { addItem("preparo per unloading..."); } void addItem(String newWord) { System.out.println(newWord); buffer.append(newWord); repaint(); } public void paint (Graphics g) { g.setColor(Color.LIGHT_GRAY ); public void start() { addItem("start... "); } Finestra di Output g.fillRect(10,30,300,50); g.setColor(Color.yellow) public void stop() { addItem("stop... "); } ; g.drawRect(10, 30, 300, 50); g.drawString("Ciao, sono Claudio e questa e' la mia prima applet.",20,50); } } Pagina 47 di 59 a cura di Claudio Beghetto Applet lab3.class import java.awt.*; import java.awt.event.*; import java.applet.*; public class lab3 extends Applet { int luce = 0; // 0 luci spente, 1 rosso // 2 giallo, 3 verde int yRosso=20; int yGiallo=50; int yVerde=80; int ySpegni=120; Button pulsanteRosso; Button pulsanteGiallo; Button pulsanteVerde; Button pulsanteSpegni; public void init() { setLayout(null); pulsanteRosso = new Button("Rosso"); pulsanteRosso.setBounds(20, yRosso, 80, 20); pulsanteGiallo = new Button("Giallo"); pulsanteGiallo.setBounds(20, yGiallo, 80, 20); pulsanteVerde = new Button("Verde"); pulsanteVerde.setBounds(20, yVerde, 80, 20); pulsanteSpegni = new Button("Spegni"); pulsanteSpegni.setBounds (40, ySpegni, 80, 20); add(pulsanteRosso); add(pulsanteGiallo); add(pulsanteVerde); add(pulsanteSpegni); ActionListener al = new ActionListener() Pagina 48 di 59 a cura di Claudio Beghetto { public void actionPerformed(ActionEvent evento) { Object s = evento.getSource(); if (s == pulsanteRosso) Rosso(); else if (s == pulsanteGiallo) Giallo(); else if (s == pulsanteVerde) Verde(); else if (s == pulsanteSpegni) Spegni(); } }; pulsanteRosso.addActionListener(al); pulsanteGiallo.addActionListener(al); pulsanteVerde.addActionListener(al); pulsanteSpegni.addActionListener(al); } void Rosso() { luce = 1; repaint(); } void Giallo() { luce = 2; repaint(); } void Verde() { luce = 3; repaint(); } void Spegni(){ luce = 0; repaint(); } public void paint(Graphics g) { g.setColor(Color.gray); g.fillRect(110, yRosso-10, 40, 100); Pagina 49 di 59 a cura di Claudio Beghetto switch (luce) { case 1: g.setColor(Color.red); g.fillOval(120, yRosso, 20, 20); g.setColor(Color.black); g.fillOval(120, yGiallo, 20, 20); g.fillOval(120, yVerde, 20, 20); break; case 2: g.setColor(Color.yellow); g.fillOval(120, yGiallo, 20, 20); g.setColor(Color.black); g.fillOval(120, yRosso, 20, 20); g.fillOval(120, yVerde, 20, 20); break; case 3: g.setColor(Color.green); g.fillOval(120, yVerde, 20, 20); g.setColor(Color.black); g.fillOval(120, yRosso, 20, 20); g.fillOval(120, yGiallo, 20, 20); break; case 0: g.setColor(Color.black); g.fillOval(120, yRosso, 20, 20); g.fillOval(120, yGiallo, 20, 20); g.fillOval(120, yVerde, 20, 20); } } } <HTML> <HEAD> <TITLE>Applet HTML Page</TITLE> </HEAD> <BODY> <H3><HR WIDTH="100%">Applet HTML Page<HR WIDTH="100%"></H3> <P> <APPLET codebase="classes" code="lab3.class" width=350 height=200></APPLET> </P> <HR WIDTH="100%"><FONT SIZE=-1><I>Generated by NetBeans IDE</I></FONT> </BODY> </HTML> Pagina 50 di 59 a cura di Claudio Beghetto Applet Colors package Colori; import import import import import import java.applet.Applet; java.awt.Color; java.awt.Graphics; java.awt.Graphics2D; java.awt.Rectangle; javax.swing.JOptionPane; /** * * @author */ public class Colors extends Applet { public void init() { String input; // chiedi all'utente i valori per il rosso, il verde e il blu // il valore deve essere compreso tra 0.0 e 1.0 input = JOptionPane.showInputDialog("rosso:"); red = Float.parseFloat(input); input = JOptionPane.showInputDialog("verde:"); green = Float.parseFloat(input); input = JOptionPane.showInputDialog("blu:"); blue = Float.parseFloat(input); } Pagina 51 di 59 a cura di Claudio Beghetto public void paint(Graphics g) { final int SQUARE_LENGTH = 100; Graphics2D g2 = (Graphics2D)g; // seleziona il colore nel contesto grafico Color fillColor = new Color(red, green, blue); g2.setColor(fillColor); // costruisci e colora un quadrato, il cui centro corrisponda // al centro della finestra Rectangle square = new Rectangle( (getWidth() - SQUARE_LENGTH) / 2, (getHeight() - SQUARE_LENGTH) / 2, SQUARE_LENGTH, SQUARE_LENGTH); g2.fill(square); } private float red; private float green; private float blue; } Pagina 52 di 59 a cura di Claudio Beghetto Applet Temperature import import import import java.applet.Applet; java.awt.Graphics; java.awt.Graphics2D; java.awt.Rectangle; public class Temperature extends Applet { public void paint(Graphics g) { Graphics2D g2 = (Graphics2D)g; month = 0; units = new UnitConverter(0, 12, 0, 40, getWidth(), getHeight()); final int final int final int final int final int final int final int final int final int final int final int final int JAN_TEMP = 11; FEB_TEMP = 13; MAR_TEMP = 16; APR_TEMP = 20; MAY_TEMP = 25; JUN_TEMP = 31; JUL_TEMP = 33; AUG_TEMP = 32; SEP_TEMP = 29; OCT_TEMP = 23; NOV_TEMP = 16; DEC_TEMP = 12; drawBar(g2, drawBar(g2, drawBar(g2, drawBar(g2, drawBar(g2, drawBar(g2, drawBar(g2, drawBar(g2, drawBar(g2, drawBar(g2, drawBar(g2, drawBar(g2, JAN_TEMP); FEB_TEMP); MAR_TEMP); APR_TEMP); MAY_TEMP); JUN_TEMP); JUL_TEMP); AUG_TEMP); SEP_TEMP); OCT_TEMP); NOV_TEMP); DEC_TEMP); } public void drawBar(Graphics2D g2, int temperature) { // costruisci un rettangolo per questo mese e per la sua temperatura Rectangle rect = new Rectangle(month, 0, 1, temperature); // converti le coordinate in pixel e disegna units.convert(rect); g2.draw(rect); Pagina 53 di 59 a cura di Claudio Beghetto month++; } private int month; private UnitConverter units; } Pagina 54 di 59 a cura di Claudio Beghetto Applet Orologio /* *<html> <head> </head> <body> <applet code = "orol.class"> </applet> </body> </html> */ /* viene creata una classe che eredita Applet. Vengono implementati i metodi Start, stop, paint. viene creato un thread per gestire lo scorrere del tempo che viene implementato dal metodo run. infine ad ogni secondo trascorso viene ridisegnata la stringa con l'ora. */ import import import import import java.lang.*; java.applet.*; java.awt.*; java.util.*; java.text.*; public class orol extends Applet implements Runnable{ private Thread clockThread = null; private Calendar oldTime = null; public void start(){ if (clockThread == null){ clockThread = new Thread(this, "orol"); clockThread.start(); } } public void run(){ while(clockThread != null){ while(Calendar.getInstance() == oldTime && oldTime != null); repaint(); } } public void stop() { clockThread = null; } public void paint(Graphics g){ oldTime = Calendar.getInstance(); DateFormat formatter = new SimpleDateFormat("HH:mm:ss"); Pagina 55 di 59 a cura di Claudio Beghetto g.setColor(Color.LIGHT_GRAY); g.fillRect(20,30,80,30); g.setColor(Color.blue); g.drawRect(22, 32, 80, 30); g.drawRect(20, 30, 80, 30); g.drawString(formatter.format(oldTime.getTime()), 40, 50); try{ Thread.sleep(100); }catch(Exception e){} } } Pagina 56 di 59 a cura di Claudio Beghetto Creare un Eseguibile con Launch4j Primo: Con Clean & Build si crea un file .jar (Apertura.jar) nella directory interna (dist) al Package Launch4j non converte l'applicazione in un eseguibile, perchè questo provoca spesso molti problemi. Semplicemente si pone come wrapper verso l'applicazione Java, ed è quindi comunque necessario che il sistema abbia installata una qualche versione del Java Runtime Environment. Potete scaricare Launch4j dal sito ufficiale del progetto. Per Salvare un file di Configurazione (xml) e Creare l’eseguibile (exe) Pagina 57 di 59 a cura di Claudio Beghetto Risultato dell’esercizio ese 9, qui diventato : ApriDispense2.exe Pagina 58 di 59 <launch4jConfig> <dontWrapJar>false</dontWrapJ ar> <headerType>gui</headerType> <jar>C:\Documents and Settings\...\Documenti\Net BeansProjects\APertura\d ist\APertura.jar</jar> <outfile>C:\Documents and Settings\..\Desktop\ApriDi spense2.exe</outfile> <errTitle /> <cmdLine /> <chdir /> <priority>normal</priority> <downloadUrl>http://java.com/d ownload</downloadUrl> <supportUrl /> <customProcName>false</custo mProcName> <stayAlive>false</stayAlive> <manifest /> <icon /> - <classPath> <mainClass>Apri</mainClass> <cp>Apri</cp> </classPath> - <jre> <path /> <minVersion>1.6.0_11</minVersi on> <maxVersion /> <jdkPreference>preferJre</jdkPr eference> </jre> </launch4jConfig> a cura di Claudio Beghetto LIBRERIE java.applet , serve per creare dei programmi che girano sui web browsers, chiamati applet. java.awt, questo package e i suoi sottopackages implementano le classi per implementare i controlli GUI, per implementare interfacce grafiche, oltre agli strumenti per il disegno, manipolazione di immagini, stampa e altre funzionalità java.beans, package che permette di definire componenti Java e di utilizzarli in altri programmi. java.rmi, package per l'invocazione di metodi remoti, ovvero di metodi di oggetti che si trovano ovunque sulla rete, per costruire delle applicazioni distribuite. java.security, ci sono classi che implementano le funzioni di sicurezza, come ad esempio classi utilizzate per crttografare documenti prima di mandarli in rete. java.sql, interfaccia tra il linguaggio Java e il linguaggio per basi di dati SQL. java.text, classi molto utili per l'interazionalizzazione. javax.accessibility, classi che supportano tecnologie a sostegno degli utenti disabili. javax.swing, è un estensione di java.awt, per costruire applets e applicazioni grafiche è un portento. org.omg.CORBA, permette di interfacciare il linguaggio Java con il linguaggio CORBA. Pagina 59 di 59 a cura di Claudio Beghetto