Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
ASUS Expertbook PM3: il notebook robusto per le aziende
ASUS Expertbook PM3: il notebook robusto per le aziende
Pensato per le necessità del pubblico d'azienda, ASUS Expertbook PM3 abbina uno chassis particolrmente robusto ad un pannello da 16 pollici di diagonale che avantaggia la produttività personale. Sotto la scocca troviamo un processore AMD Ryzen AI 7 350, che grazie alla certificazione Copilot+ PC permette di sfruttare al meglio l'accelerazione degli ambiti di intelligenza artificiale
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Abbiamo provato per diversi giorni una new entry del mercato italiano, la Gowow Ori, una moto elettrica da off-road, omologata anche per la strada, che sfrutta una pendrive USB per cambiare radicalmente le sue prestazioni
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 25-06-2009, 11:21   #1
Cory
Member
 
L'Avatar di Cory
 
Iscritto dal: Jan 2009
Città: Trento
Messaggi: 81
[JAVA] problema visualizzazione componenti in una finestra

Ciao a tutti. C'è una cosa che non capisco: quando scrivo un programma che ha della grafica (bottoni, textfield, ecc), succede questo...se io setto che la finestra non sia ridimensionabile, nel frame non si vede nulla...se la setto come resizable all'inizio non si vede niente, ma basta ridimensionare un attimo et voilà, i componenti appaiono tutti!
Non è normale sta cosa, non è che dimentico di invocare qualche metodo o qualcosa del genere?
Cory è offline   Rispondi citando il messaggio o parte di esso
Old 25-06-2009, 11:50   #2
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da Cory Guarda i messaggi
Non è normale sta cosa, non è che dimentico di invocare qualche metodo o qualcosa del genere?
Magari sì, c'è qualcosa di sbagliato, però per capirlo dovresti postare il codice di almeno un caso, così possiamo rendercene conto assieme.

Ah, forse c'è qualche concetto di base di Swing che ti sfugge o che ti è ancora poco chiaro: a tal proposito prova a dare un occhio a questo tutorial (pdf, in italiano).
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 25-06-2009, 11:52   #3
Cory
Member
 
L'Avatar di Cory
 
Iscritto dal: Jan 2009
Città: Trento
Messaggi: 81
sostanzialmente mi succede con tutte le applicazioni, quindi suppongo di aver perso qualche dettaglio ti posto questo codice qui

Codice:
package altro;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.event.*;

public class Altro extends JFrame{

    public static void main(String [] args){
        JFrame x=new JFrame("Pannello");
        x.setSize(400, 400);
        x.setVisible(true);
        x.setResizable(true);
        x.setContentPane(new Finestra());
        x.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
}

public class Finestra extends JPanel{

    JButton cambia_stato;
    JLabel stato;
    JLabel labx;
    JLabel laby;
    JFormattedTextField tfx;
    JFormattedTextField tfy;
    JPanel pannello;
    
    
    public Finestra(){
        this.setLayout(new GridBagLayout());
        this.setBackground(Color.GRAY);
        GridBagConstraints c=new GridBagConstraints();

        cambia_stato=new JButton("Cambia stato");
        cambia_stato.addActionListener(new Attiva());
        c.fill=GridBagConstraints.BOTH;
        c.anchor=GridBagConstraints.NORTH;
        c.gridx=0;
        c.gridy=0;
        c.gridheight=1;
        c.gridwidth=1;
        c.insets.left=10;
        c.insets.right=10;
        c.insets.top=5;
        add(cambia_stato,c);

        stato=new JLabel("DISABILITATO");
        c.fill=GridBagConstraints.BOTH;
        c.gridx=1;
        c.gridy=0;
        c.gridheight=1;
        c.gridwidth=1;
        add(stato,c);

        labx=new JLabel("X=");c.fill=GridBagConstraints.BOTH;
        c.gridx=3;
        c.gridy=0;
        c.gridheight=1;
        c.gridwidth=1;
        add(labx,c);

        tfx=new JFormattedTextField("");
        tfx.setPreferredSize(new Dimension(20,30));
        c.fill=GridBagConstraints.BOTH;
        c.gridx=4;
        c.gridy=0;
        c.gridheight=1;
        c.gridwidth=1;
        add(tfx,c);

        laby=new JLabel("Y=");
        c.fill=GridBagConstraints.BOTH;
        c.gridx=3;
        c.gridy=1;
        c.gridheight=1;
        c.gridwidth=1;
        add(laby,c);

        tfy=new JFormattedTextField("");
        tfy.setPreferredSize(new Dimension(20,30));
        c.fill=GridBagConstraints.BOTH;
        c.gridx=4;
        c.gridy=1;
        c.gridheight=1;
        c.gridwidth=1;
        add(tfy,c);

        pannello=new JPanel();
        pannello.setBackground(Color.WHITE);
        pannello.setBorder(BorderFactory.createLineBorder(Color.black));
        c.fill=GridBagConstraints.BOTH;
        c.gridx=0;
        c.gridy=2;
        c.gridheight=5;
        c.gridwidth=5;
        c.ipady=200;
        add(pannello,c);
        repaint();
    }

    class Attiva implements ActionListener{

        boolean isActive=false;

        public void actionPerformed(ActionEvent e) {
        if(isActive==false){
            pannello.addMouseListener(new Puntatore());
            isActive=true;
            stato.setText("ABILITATO");
            }
        else {
            isActive=false;
            stato.setText("DISABILITATO");


            }
        }    
    }

    class Puntatore implements MouseListener{

        public void mouseClicked(MouseEvent e) {
            throw new UnsupportedOperationException("Not supported yet.");
        }
        public void mousePressed(MouseEvent e) {}
        public void mouseReleased(MouseEvent e) {}
        public void mouseEntered(MouseEvent e) {}
        public void mouseExited(MouseEvent e) {}
    }
    
}
Cory è offline   Rispondi citando il messaggio o parte di esso
Old 25-06-2009, 12:35   #4
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Ok, ho letto velocissimamente il codice, ti espongo rapidamente le cose che non vanno bene, più tardi, appena trovo un po' di tempo, te le segnalo con più precisione negli spezzoni di codice.

Cose che non vanno:
1) ordine delle operazioni eseguite sul JFrame (nel metodo main)
viste le operazioni che esegui per concretizzare il tuo JFrame, setVisible() andrebbe invocata per ultima.

2) Thread di esecuzione delle operazioni eseguite sul JFrame (nel metodo main)
Il metodo main, entry point dell'applicazione, viene eseguito da un thread che non è l'EDT (Event Dispatcher Thread) ma le operazioni da eseguire realizzano un componente Swing, quindi deve essere l'EDT a eseguirle.

3) alla fine del costruttore della classe Finestra (un JPanel) c'è una chiamata a repaint(). Non dovrebbe essere neccessaria, non solo, la sua presenza in un costruttore "puzza".

Counsulta il tutorial che ti ho linkato prima: sono sicuro che ti chiarirà moltissimo le idee
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 25-06-2009, 12:43   #5
Cory
Member
 
L'Avatar di Cory
 
Iscritto dal: Jan 2009
Città: Trento
Messaggi: 81
intanto grazie mille della disponibilità

1. non sapevo che ci fosse un particolare ordine nella dichiarazione...spostando all'ultimo posto il metodo setVisible() effettivamente funziona tutto

2. sinceramente questo non l'ho capito cioè, proprio arabo

3. il repaint() l'ho chiamato per disperazione per vedere se era magari quella la causa del problema, poi mi sono dimenticato di eliminarlo vedendo che non cambiava nulla..effettivamente non ha nessun senso

il tutorial l'ho già scaricato e lo leggerò con molta attenzione! grazie dell'aiuto!
Cory è offline   Rispondi citando il messaggio o parte di esso
Old 25-06-2009, 12:49   #6
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da Cory Guarda i messaggi
2. sinceramente questo non l'ho capito cioè, proprio arabo
Si tratta di un aspetto fondamentale, che si deve conoscere se si programma in Swing. In pratica l'architettura di Swing è a thread singolo, quindi tutte le operazioni su componenti Swing vanno eseguite dallo stesso thread, che è l'EDT.

Ti risulterà tutto chiaro appena avrai letto le prime pagine di quel tutorial, la cosa è molto più semplice di quel che ti sembra adesso


@EDIT:
Quote:
1. non sapevo che ci fosse un particolare ordine nella dichiarazione...spostando all'ultimo posto il metodo setVisible() effettivamente funziona tutto
Specifico per maggiore chiarezza: nessun ordine particolare. In realtà è solo setVisible() che va chiamata per ultima in quel contesto.
Il perchè (setVisible() e pack() sono particolari, perchè la loro invocazione rende "visualizzabile" un componente, e quesot ha delle conseguenze) lo trovi spiegato sempre nelle prime pagine del tutorial succitato.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 25-06-2009 alle 12:56.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design   Recensione OnePlus 15: potenza da vendere e batt...
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media AMD Ryzen 5 7500X3D: la nuova CPU da gaming con ...
Obbligati ad acquistare una scheda madre...
GTA VI su PC? La data non c'è, ma...
Monopattini elettrici, a un anno dal dec...
Tesla Robotaxi, autista di sicurezza si ...
Samsung Galaxy S26: svelate le combinazi...
Microsoft Ignite: arriva Edge for Busine...
OPPO e Lamine Yamal uniscono sport e tec...
Microsoft, NVIDIA e Anthropic siglano un...
SpaceX potrebbe comunicare alla NASA rit...
Scoperte cavità sotterranee scava...
OnePlus anticipa l'arrivo di due nuovi p...
DJI lancia Osmo Action 6: la prima actio...
NASA: conferenza stampa sulla cometa int...
Ex CEO di TSMC passa a Intel: aperta un'...
Gigabyte X870E Aorus Elite X3D, una moth...
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: 06:06.


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