Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    33

    Problemi con JApplet e interfaccia grafica

    Sto costruendo un' interfaccia grafica e non riesco a comprendere alcune cose. La seguente interfaccia presenta alcuni problemi: il codice che ritengo rilevante è piuttosto breve

    public void init()
    {
    //creazione interfaccia grafica
    setSize(1278,921);


    //creazione griglia
    griglia=new GridBagLayout();
    gbc= new GridBagConstraints();
    gbc.fill=GridBagConstraints.BOTH;
    getContentPane().setLayout(griglia);

    //aggiunta componente alla griglia
    buildConstraints(gbc,0,0,1,1,98,98);
    pannelloGrafico=new JPanel();
    griglia.setConstraints(pannelloGrafico,gbc);



    //aggiunta componente alla griglia
    buildConstraints(gbc,1,0,1,1,2,98);
    riempimentoDx=new JButton("riempimentoDx");
    griglia.setConstraints(riempimentoDx,gbc);


    //aggiunta componente alla griglia
    buildConstraints(gbc,0,1,2,1,98,2);
    riempimentoBasso=new JButton("riempimentoBasso");
    griglia.setConstraints(riempimentoBasso,gbc);




    addKeyListener(this);
    addMouseMotionListener(this);
    pannelloGrafico.addKeyListener(this);
    pannelloGrafico.setFocusable(true);
    // riempimentoDx.addKeyListener(this);
    //riempimentoBasso.addKeyListener(this);

    add(pannelloGrafico);
    add(riempimentoDx);
    add(riempimentoBasso);

    pannelloGrafico.setVisible(true);
    setVisible(true);

    pannelloGrafico.setFocusable(true);
    repaint();

    .. altro

    }

    public void paint(Graphics g)
    {

    Graphics2D schermo=(Graphics2D) g;

    Image buffervirtuale=createImage(getSize().width ,getSize().height);
    Graphics2D gr=(Graphics2D)buffervirtuale.getGraphics();

    //disegno i bordi del grafico: bordo sx, bordo basso, bordo dx, bordo alto


    grafico.draw(gr,mouseX,mouseY);
    ((Graphics2D)pannelloGrafico.getGraphics()).drawIm age(buffervirtuale,0,0,this);


    }


    alcuni chiarimenti:
    - grafico.draw contiene dei semplici drawline;
    - buffervirtuale viene utilizzato per velocizzare il refresh grafico
    - L' evento MouseMoved contiene una chiamata a repaint()

    I problemi e i dubbi sono diversi
    1) Eliminando setVisible(true) ottengo che il JPanel mostra l' immagine creata, ma non mostra i JButton. Tali bottoni vengono visualizzati solo quando ci passo sopra con il mouse
    2) Lasciando setVisible(true), come da codice incollato, visualizzo correttamente i bottoni ma non l' immagine che ho disegnato: tale immagine viene mostrata non appena muovo il mouse su un qualsiasi punto della finestra applet
    3) Il KeyListener mi consente di modificare l' immagine, ma una volta che clicco su un bottone keyListener non funziona più, ossia un click sul JPanel contenente l' immagine non restituisce il focus al JPanel stesso. Perché per i bottoni il focus cambia e per il JPanel no?
    4) il KeyListener come vedete viene assegnato al contenitore JApplet: perché se tolgo il KeyListener al JPanel l' ascoltatore non funziona?

    Per ulteriori chiarimenti postate pure.
    Ringrazio tutti per l' attenzione

    PS: qualcuno può segnalarmi un Buon tutorial che spieghi le interfacce grafiche nei dettagli?

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    33
    Provo ad uppare: è un problema realmente complesso o manca del codice che possa essere utile a comprendere la situazione?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.