Progetto Eclipse: ImageAnalyzer.zip
Categoria: Informatica
Passi da seguire nella creazione di un’interfaccia visuale per un’applicazione Java
Creare la sottoclasse Main di JFrame
Assegnare il title
Assegnare un'eventuale icona all'applicazione
Creare la JMenuBar
Creare le voci principali JMenu (es. File, Modifica, Visualizza, etc.)
Assegnare i text (i name saranno creati in automatico da Eclipse come mnNome)
Assegnare i Mnemonic (lettere sottolineate attivabili con ALT+lettera)
Creare le voci secondarie JMenuItem
Assegnare i text (i name saranno creati in automatico da Eclipse come mntmNome)
Assegnare le scorciatoie da tastiera (accelerator)
Assegnare eventuali icone
Inserire eventuali separatori (con orientamento horizontal)
Creare la toolbar JToolBar
Creare i bottoni
Assegnare i text (i name saranno creati in automatico da Eclipse come btnNome)
Assegnare le icone
Assegnare gli Hint
Inserire eventuali separatori (con orientamento vertical)
NB Le icone vengono memorizzate in un sottopackage del package principale
Inserire nel centro (Center) un JScrollPane
Inserire nello scrollPane la JTextArea che conterrà il testo
Assegnare tutte le azioni ai bottoni
Blocco note (per la 3E)
Realizzare il blocco note come in figura, sfruttando le icone pubblicate qui di seguito. Devono essere collocate all’interno del package: blocconote.img
![]()
Icona dell’applicazione (16×16): ![]()
Listato: BloccoNote.html
Progetto Eclipse: BloccoNote.zip
Executable JAR file: BloccoNote.jar
Anagrafe (sito JSP-SQL)
Studiarsi la struttura della pagina JSP aggiorna, quindi creare la servlet cancella che serve ad eliminare un record inserendone l’id. Costruire il database opportuno con i vostri dati e modificare il percorso della connessione al DB con quello corretto.
(Vedere il n. 5, pag. 343-349 di “Servlet e pagine JSP”)
Impostazione iniziali per la creazione di applicazioni GUI in Eclipse
Siti web personali
Il giorno venerdì 29 aprile 2016 dalle ore 14:30 alle ore 16:30 nell’Aula “Roma” avrà luogo l’incontro per la creazione e la gestione dei siti internet, rivolto ai docenti interessati e in particolare ai coordinatori di dipartimento. Un sito web personale costituisce una valida alternativa a Mastercom per la pubblicazione e la condivisione di risorse e materiali didattici nel caso questi debbano rimanere visibili sempre e indipendentemente dalle classi assegnate durante l’anno scolastico. Con l’occasione saranno strutturati i vari siti dei dipartimenti e predisposti per accogliere l’archivio delle prove scritte delle varie discipline. Gli argomenti affrontati saranno i seguenti:
- Presentazione dell’ambiente WordPress per la costruzione del proprio blog
- Costruzione della struttura del sito e organizzazione dei contenuti
- Inserimento delle risorse testuali e multimediali (immagini, audio, video)
- Creazione dell’archivio delle prove scritte delle discipline
Il referente del sito scolastico
Gianfranco Oddenino
Esempio di servlet con una query su un database
import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<!DOCTYPE html>"); out.println("<html>"); out.println("<head>"); out.println("<title>My CD - Elenco</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>My CD - Elenco</h1>"); try { Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection conn = DriverManager.getConnection("jdbc:mysql://urlhost/nomedb", "utente", "password"); Statement stat = conn.createStatement(); ResultSet rs = stat.executeQuery("SELECT * FROM cd"); while (rs.next()) { if (rs.isFirst()) { out.println("<table border=\"1\" cellpadding=\"2\" cellspacing=\"0\">"); out.println("<caption>Tabella dei miei CD musicali</caption>"); out.println("<thead>"); out.println("<tr><th>Id</th><th>Titolo</th><th>Interprete</th><th>Anno</th></tr>"); out.println("</thead>"); out.println("<tbody>"); } out.print("<tr>"); out.print("<td>" + rs.getInt("id") + "</td>"); out.print("<td>" + rs.getString("titolo") + "</td>"); out.print("<td>" + rs.getString("autore") + "</td>"); out.print("<td>" + rs.getString("anno") + "</td>"); out.println("</tr>"); if (rs.isLast()) { out.println("</tbody>"); out.println("</table>"); } } conn.close(); } catch (InstantiationException | IllegalAccessException | ClassNotFoundException | SQLException ex) { out.println("<p>" + ex.toString() + "<br/>" + ex.getMessage() + "</p>"); } out.println("</body>"); out.println("</html>");
NXT rileva ostacolo
Avanza con una velocità proporzionale alla distanza dell’ostacolo che ha di fronte; se la distanza è grande, massima velocità; se la distanza è piccola, minima velocità; se la distanza è inferiore a 10 cm, si ferma, altrimenti riparte.
import lejos.nxt.Button;
import lejos.nxt.Motor;
import lejos.nxt.SensorPort;
import lejos.nxt.UltrasonicSensor;
import lejos.robotics.navigation.DifferentialPilot;
import lejos.util.Delay;
public class Ostacoli {
public static void main(String[] args) {
DifferentialPilot dp = new DifferentialPilot(5.5f, 11.5f, Motor.A, Motor.C);
UltrasonicSensor us = new UltrasonicSensor(SensorPort.S1);
dp.forward();
do {
int d = us.getDistance();
if (d < 10)
dp.stop();
else {
dp.setTravelSpeed(d);
dp.forward();
}
Delay.msDelay(100);
} while (!Button.ESCAPE.isDown());
}
}
NXT sensore US
Esegue una sequenza di beep-beep con periodo proporzionale alla distanza dell’ostacolo; se l’ostacolo è superiore a 50 cm, nessun beep-beep; a distanza inferiore il beep-beep diventa più veloce, quanto più l’ostacolo è vicino.
public class SensoreUS {
public static void main(String[] args) {
UltrasonicSensor us = new UltrasonicSensor(SensorPort.S1);
do {
int d = us.getDistance();
if (d<50) {
Sound.beep();
Delay.msDelay(d*10);
}
} while (!Button.ESCAPE.isDown());
}
}
NXT segue linea
import lejos.nxt.Button;
import lejos.nxt.LCD;
import lejos.nxt.LightSensor;
import lejos.nxt.Motor;
import lejos.nxt.SensorPort;
import lejos.robotics.navigation.DifferentialPilot;
import lejos.util.Delay;
public class SeguiLinea {
public static void main(String[] args) {
LightSensor ls = new LightSensor(SensorPort.S1, true); // led acceso
DifferentialPilot dp = new DifferentialPilot(5.5, 11.5, Motor.A, Motor.C);
int valS = 0, valC = 0, valM = 0;
LCD.drawString("Misura scuro", 0, 0);
Delay.msDelay(2000);
valS = ls.getLightValue();
LCD.drawString("Misura chiaro", 0, 0);
Delay.msDelay(2000);
valC = ls.getLightValue();
valM = (valC + valS) / 2;
do {
int val = ls.getLightValue();
LCD.drawInt(val, 0, 0);
dp.steer((val - valM) * 10);
} while (!Button.ESCAPE.isDown());
}
}




