Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
Analizziamo nel dettaglio DJI RS 5, l'ultimo arrivato della famiglia Ronin progettato per videomaker solisti e piccoli studi. Tra tracciamento intelligente migliorato e ricarica ultra rapida, scopriamo come questo gimbal eleva la qualità delle produzioni.
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D è la nuova CPU gaming di riferimento grazie alla 3D V-Cache di seconda generazione e frequenze fino a 5,6 GHz. Nei test offre prestazioni superiori a 9800X3D e 7800X3D, confermando la leadership AMD nel gaming su PC.
Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-10-2009, 10:50   #1
davide_sana
Junior Member
 
Iscritto dal: Apr 2009
Messaggi: 27
[JAVA] Inserimento immagine in Frame

Salve a tutti.
Ho il seguente problema. Vorrei inserire un'immagine in un JFrame. La soluzione credo dovrebbe essere : creare un'icona con l'immagine e metterla dentro una label, dopo aggiungere la label al frame.

Il codice scritto è il seguente:

JLabel sfondo_davide = new JLabel(new ImageIcon("me.jpeg"));
JFrame nuovo_davide = new JFrame("Ciao Davide");

//assegno la label al frame
nuovo_davide.add(sfondo_davide);

nuovo_davide.setBounds(300,300,LARGHEZZA,ALTEZZA);
nuovo_davide.setVisible(true);

Il problema è che quando il frame si apre nn visualizza nessuna immagine ma solo una schermata grigia con il titolo finestra da me scelto. L'immagine me.jpg che vorrei caricare è su desktop.

Dov'è sta l'errore?
Ed inoltre, è corretto scrivere "me.jpeg" visto che l'immagine sta sul desktop?
davide_sana è offline   Rispondi citando il messaggio o parte di esso
Old 05-10-2009, 11:17   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
La stringa che passi al costruttore di ImageIcon denota un file. In java quando è richiesto il nome di un file e non ne viene fornito il percorso assoluto, la stringa relativa viene trasformata in un file preponendo alla stessa il valore della variabile di sistema user.dir. Tale variabile indica il percorso della directory di lavoro del processo java.

A conti fatti tu scrivi:

"me.jpeg"

e ImageIcon capisce:

System.getProperty("user.dir") + File.separator + "me.jpeg"

Se lanci il programma Java da "c:\bingo" allora ImageIcon capirà:

"c:\bingo\me.jpeg"

Poichè il percorso assoluto dell'immagine dipende dal percorso della directory di lavoro ecco che l'immagine è trovata o non trovata a seconda di come sia eseguito il programma stesso.

Una soluzione - peraltro non consigliabile in un contesto reale ma più che accettabile durante l'apprendimento - consiste nello specificare il percorso assoluto dell'immagine. Supponendo che "me.jpeg" sia in "C:\Documents and Settings\utente\desktop" dirai:


JLabel sfondo_davide = new JLabel(new ImageIcon("c:\\Documents and Settings\\utente\\desktop\\me.jpeg"));

Verifica il percorso e, in particolare, controlla che il file immagine abbia effettivamente estensione "jpeg" e non solo "jpg".
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 05-10-2009, 11:39   #3
davide_sana
Junior Member
 
Iscritto dal: Apr 2009
Messaggi: 27
Grazie.
Il problema stava proprio nella descrizione del percorso dell'immagine.

Ne approfitto per chiederti la seguente. Supponiamo di avere un frame con diversi bottoni. Cliccando su uno di questi bottoni si apre un nuovo frame. Come faccio a rendere nn selezionabile il frame precedente? ovvero vorrei che,una volta aperto il nuovo frame, siamo possibili operazioni solo sui bottoni del nuovo frame aperto.
davide_sana è offline   Rispondi citando il messaggio o parte di esso
Old 05-10-2009, 12:05   #4
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Anzichè aprire un nuovo JFrame apri un nuovo JDialog. JDialog è una finestra simile a JFrame, ma a differenza di quest'ultima, è in grado di prevalere obbligatoriamente su un'altra finestra.

Supponendo che la finestra principale sia "finestra001", alla pressione del pulsante dirai:

JDialog finestra002 = new JDialog(finestra001, "Titolo Finestra 002", Dialog.ModalityType.APPLICATION_MODAL);

//imposta il contenuto di finestra002, la posizione, la dimensione eccetera

finestra002.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
finestra002.setVisible(true);

Dopo il setVisible e finchè finestra002 è visibile l'interazione con altre finestre dello stesso programma è impedita - e, dunque, è impedito l'uso del contenuto di quelle finestre.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 05-10-2009, 13:54   #5
davide_sana
Junior Member
 
Iscritto dal: Apr 2009
Messaggi: 27
Ho scritto il seguente codice:

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

class Window extends JFrame
{
public static final int LARGHEZZA = 400;
public static final int ALTEZZA = 250;

public static void main(String[] args) {

JFrame finestra = new JFrame ("Prova");
JPanel pannello = new JPanel (new BorderLayout());
JButton Avanti = new JButton ("Avanti");
pannello.add(Avanti);
finestra.setBounds(300,300,LARGHEZZA,ALTEZZA);
finestra.setVisible(true);

//aggiungo il pannello al frame nello spazio in basso
finestra.getContentPane().add(pannello, BorderLayout.PAGE_END);

//registra evento click su Avanti
Avanti.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {

JDialog finestra2 = new JDialog(finestra, "Titolo Finestra 002",
Dialog.ModalityType.APPLICATION_MODAL);
finestra2.setBounds(300,300,LARGHEZZA,ALTEZZA);
finestra2.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
finestra2.setVisible(true);

}
});

finestra.addWindowListener(new WindowAdapter()

{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
}

Si apre il primo frame..ma quando clicco su "Avanti" si genera errore..e l'errore lo segnale nella seguete istruzione:

JDialog finestra2 = new JDialog(finestra, "Titolo Finestra 002",,
Dialog.ModalityType.APPLICATION_MODAL);

e in particolare nn riconosce "finestra".

Dove commetto l'errore?
davide_sana è offline   Rispondi citando il messaggio o parte di esso
Old 05-10-2009, 14:03   #6
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
usa i tag code quando inserisci del codice per preservarne l'indentazione nel forum.

Il codice così com'è non dovrebbe neppure compilare. La ragione sta in ciò che la variabile locale "finestra" è usata nel corpo di una classe locale (new ActionListener() {...}). Il linguaggio stabilisce che tale variabile locale debba essere dichiarata "final":

Codice:
final JFrame finestra = new JFrame("prova");
...
avanti.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        JDialog finestra2 = new JDialog(finestra, "titolo", Dialog.ModalityType.APPLICATION_MODAL);
        finestra2.setSize(new Dimension(LARGHEZZA, ALTEZZA);
        finestra2.setLocation(300, 300);
        finestra2.setVisible(true);
    }
});
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 05-10-2009, 15:13   #7
davide_sana
Junior Member
 
Iscritto dal: Apr 2009
Messaggi: 27
Grazie!
davide_sana è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
Windows 11, ancora problemi di spegnimen...
Amazon Seconda Mano: sconto extra del 10...
Apple perde altri talenti del settore AI...
Schede madri ASRock: nuove segnalazioni ...
Troppa IA su Windows 11: Microsoft pront...
CATL svela la batteria 5C che si auto-ri...
AirPods Pro 3 a prezzo record: ANC avanz...
Connettore fuso in diretta: il 12VHPWR c...
Google Pixel 10 Pro XL in offerta: il pi...
Prezzi delle RAM fuori controllo: aument...
Le scope elettriche punto di riferimento...
GTA: San Andreas è stato finito i...
Ora la spesa con Cortilia si può fare di...
Una scoperta che cambia la nanotecnologi...
I marchi "figli" non bastano: ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 13:24.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v