Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    69

    [JAVA-swing] immagini scrollabili

    Salve,

    sono 2 giorni che non riesco a risolvere sto problema.
    Devo creare un pannello con dentro un'immagine creata con Graphics e che sia scrollabile.
    Nel sito della sun ci sono 2 esempi del tutorial swing che però non descrivono la mia situazione. Uno descrive come caricare un'immagine da file renderla scrollabile e il secondo crea un pannello scrollabile e lo aggiorna ogni volta che l'utente ci disegna qualcosa...ma ovviamente all'inizio è vuoto.

    Io invece voglio creare una pannello scrollabile con dentro un'immagine che creo dentro il metodo paintComponent().Ovviamente non so a priori quale sia la grandezza del disegno! Non mi funziona! Non mi scrolla!
    Io faccio:
    --------------------------------------
    ...
    codice:
    MyDrawingPanel mdp = new MyDrawingPanel();
    JScrollPane scroller = new JScrollPane(mdp);
    ...
    ---------------------------------
    e il MyDrawingPanel è:
    ---------------------------------
    codice:
    public class MyDrawingPanel extends JPanel {
       //costruttore
    
       //override del metodo paintComponent
       public void paintComponent(Graphics g) {
          g.fillRect(...);
       }
    }
    ---------------------------------

    Aiuto!

  2. #2
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    prova con:

    codice:
    ...
    JScrollPane scrollpane = new JScrollPane(HORIZONTAL_SCROLLBAR_ALWAYS, VERTICAL_SCROLLBAR_ALWAYS);
    scrollpane.setViewportView(mdp);
    ...


    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    69
    mmm qualcosa sembra migliorare.
    Però in pratica mi compaiono le due scrollbar senza "pezzo" per farle scorrere...cioè sono vuote!
    Sembra insomma che lo JScrollPane non veda il quello che disegno al suo interno. In pratica lo visualizza solo della dimesione della finestra sebbene il disegno sia molto più vasto.
    In realtà sono riuscito a "fregarlo" però viene uno schifo. In pratica il pannello con il disegno che andrebbe dentro lo JScrollPane viene inserito in un pannello stupido che chiamo container e la cui size la setto alla dimensione del disegno. In pratica:

    "scrollpane" contienr "container" che contiene "MyDrawingPanel".

    Ora così funziona, ma se sposto le scrollbar il disegno, che pure scrolla correttamente, viene distorto nel senso che si sovrappongono immagini delle scrollbar stesse...come se fosse freezato, non so se mi capisci!

    Mah! Sempre più perplesso!

  4. #4
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    si capisco cosa intendi, ma alla fine dello storpiamento il disegno viene visualizzato giusto o resta deformato? Potresti provare ad usare il doppio buffering, quindi metti un listener sullo spostamento delle barre e prima di disegnare sul Graphics del paintComponent disegni su un Image di buffer appunto.
    Se la causa è proprio un freez potresti separare il processo di disegno in un altro thread.

    Ci vorebbe qualche utente che ha fatto più esperienza con swing e magari conosca qualche trucco del mestiere.

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

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 © 2024 vBulletin Solutions, Inc. All rights reserved.