Categorie
Java Swing

Java Swing: La prima finestra

Prima di iniziare a lavorare sulla nostra prima finestra in Java Swing, dovremo creare un nuovo progetto sulla nostra IDE. In questi tutorial verrà utilizzata IntelliJ IDEA ma è possibile eseguire le stesse operazioni su Eclipse o NetBeans.

Iniziamo subito creando un nuovo progetto.

Nel nostro nuovo progetto creiamo all’interno della cartella “src” un package, in questo caso lo chiamero “swing01” e all’interno di esso creiamo una classe “Main”. Aggiungiamo un metodo main e all’interno di esso possiamo iniziare a creare la nostra finestra.

Ora creiamo una variabile di tipo JFrame che chiameremo frame e nel costruttore passiamo una stringa che sarà il titolo della finestra.

JFrame frame = new JFrame("Titolo della finestra");

Per impostare la grandezza che la nostra finestra dovrà avere, per farlo utilizzeremo setSize. Passeremo due parametri: il primo sarà la larghezza (width) e il secondo sarà l’altezza (height).

frame.setSize(800, 500)

Per impostare la posizione in cui la nostra finestra apparirà sullo schermo, dobbiamo prima capire come vengono calcolati i pixel di uno schermo.

Sistema di riferimento di uno schermo con dimensioni 1280 x 720. Il punto A, al centro dello schermo, ha coordinate (640, 360)

Quindi, se per esempio desideriamo che l’angolo superiore della nostra finestra sia posizionato alle coordinate (300, 200), utilizzeremo il metodo setLocation, passando le coordinate come parametri.

frame.setLocation(200, 200);

Se invece vogliamo che la nostra finestra sia sempre al centro dello schermo, possiamo usare il metodo setLocationRelativeTo, passando null come parametro.

frame.setLocationRelativeTo(null);

Ora, senza aggiungere altro, se rendessimo visibile la nostra finestra, sarà automaticamente abilitata la possibilità di ridimensionarla, sia tramite il tasto di controllo per renderla a tutto schermo, sia tramite le frecce ai bordi della finestra. Per togliere all’utente la possibilità di fare ciò, ci basterà utilizzare il metodo setResizable

frame.setResizable(false);

Come ultima cosa, prima di rendere la nostra finestra visibile, dovremo assicurarci che, una volta chiusa la finestra, anche il processo della nostra applicazione si fermi effettivamente. Quindi dobbiamo dire al frame cosa fare quando si effettua l’operazione di chiusura, in questo modo:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Infine, una volta fatto tutto ciò, rendiamo la nostra finestra visibile

frame.setVisible(true);

Ora hai creato la tua prima finestra in Java Swing!

Categorie
Java Swing

Java Swing: Introduzione

Java Swing è una libreria di Java che contiene il necessario per creare applicazioni con interfaccia grafica (GUI).

Swing è un’evoluzione di AWT e a differenza di AWT, Swing è indipendente dalla piattaforma e i componenti sono più leggeri.

Java AWTJava Swing
Componenti dipendenti dalla piattaformaComponenti indipendenti dalla piattaforma
Componenti pesantiComponenti leggeri
La personalizzare dell’aspetto è supportataLa personalizzazione dell’aspetto è supportata
Ha meno componenti rispetto a SwingSwing rende disponibili più componenti
Non segue il MVC (Model View Control)Segue il MVC

In Swing ci sono due elementi principali; i components (componenti) e i containers (contenitori).

I components sono oggetti grafici che offrono interazioni con l’utente, come i pulsanti o le caselle per inserire il testo.

I containers contengono i components e hanno il compito di posizionarli e dimensionarli in base al layout manager che a loro viene assegnato. Un container è per esempio la finestra, con un titolo, i pulsanti e al cui interno possiamo aggiungere vari componenti.

Tutti i componenti, insieme al contenitore, possono essere visti come un’unica entità, diventando così un componente e questo ci permette di inserirlo in altri contenitori.

Ecco la gerarchia dei componenti di Swing:

hierarchy of javax swing

In Swing ci sono molti componenti come bottoni, menu, pannelli, etichette. Per separarli da AWT in Swing i loro nomi sono preceduti da una J, come JButton per esempio.

In Swing tutti i componenti derivano dalla classe astratta Component e sono organizzati in una gerarchia.

Nella parte più alta abbiamo i contenitori principali, top-level che hanno il compito di contenere i componenti di livello più basso. In Swing ce ne sono quattro, I più usati JFrame, JDialog e JApplet, il quarto è JWindow.

Abbiamo poi i contenitori intermedi, che hanno il compito di facilitare il posizionamento dei componenti atomici che poi vedremo. In alcuni casi, come quello del JPanel, che è quello più diffuso, sono invisibili. Altri contenitori intermedi sono i JTabbedPane e JScrollPane.

Infine i componenti più basici sono i componenti atomici, che derivano tutti dalla classe JComponent, come per esempio i JButton, i JTextField e le JComboBox. Alcuni hanno il compito di presentare informazioni all’utente, come i JLabel, altri ricevono input dall’utente, come il JButton, alcuni fanno entrambi come le JTable. Questi componenti non possono contenere altri componenti.

Ecco l’organizzazione dei componenti in Swing, possiamo vedere il JFrame con all’interno un Content pane, infatti in Swing ogni contenitore principale contiene in senso figurato un contenitore intermedio dato che i componenti non possono essere inseriti direttamente nel contenitore principale.

Categorie
Sonoff Mini

Sonoff Mini Diy Mode

Categorie
Python

Problema di trigonometria in Python

In questo post vedremo come risolvere un problema di trigonometria in Python.

In un triangolo rettangolo ABC di ipotenusa BC = 5 cm, si ha ABC = 50° . Determina le misure dei cateti, arrotondandole a meno di un centesimo.

Risultati: AB = 3,21 cm e AC = 3,83

Ecco il programma in Python che risolve il problema:


import turtle
import math

# Dati iniziali del problema
gradiA = 50 # L'angolo è posizionato in B
ipotenusaBC = 5

# Converto gradi in radianti
radianti = gradiA / 180.0 * math.pi

# Trovo il cateto AB e arrotondo a 2
catetoAB = round(ipotenusaBC * math.cos(radianti), 2)

# Trovo il cateto BC e arrotondo a 2
catetoAC = round(ipotenusaBC * math.sin(radianti), 2)

# Stampo i lati
print ("AB: ", catetoAB)
print ("AC: ", catetoAC)
print ("BC: ", ipotenusaBC)

Una volta risolto il problema possiamo disegnare il triangolo risultante con la libreria Turtle


# Disegno il triangolo con Turtle
tartaruga = turtle.Turtle()

tartaruga.write("A", align="right", font=("Arial", 10))

# Disegno il cateto AC (misure amplificate per scala)
tartaruga.forward(catetoAC * 30)
tartaruga.write("B", align="left", font=("Arial", 10))

# Disegno il cateto AB (misure amplificate per scala)
tartaruga.left(90)
tartaruga.forward(catetoAB * 30)
tartaruga.write("C", align="center", font=("Arial", 10))

# Disegno l'ipotenusa (misure amplificate per scala)
tartaruga.left((180 - gradiA))
tartaruga.forward(ipotenusaBC * 30)

# Finisco la tartaruga
tartaruga.hideturtle()
turtle.done()

Prova il codice su Trinket

Link al codice su GitHub https://github.com/gb-factory/Esercizi-Python/blob/master/Trigonometria/triangolo.py