The Lizard King (Member)
Rookie
Messaggi: 33
Iscritto: 10/06/2007
|
Ciao raga, ho un problema di grafica inspiegabile... allora, creando dei programmi grafici in java (usando la funzione paint()), quando vado ad eseguirli, il contenuto della finestra è ok, però se ad esempio vado a cliccare su un'altra pagina, e poi riclicco dal menu start sul programma, la finestra mi appare completamente grigia... mi spiego meglio, guardate l'immagine: http://img261.imageshack.us/img261/2258/probjavajx0.jpg
Ho il programma aperto, se io ora vado a cliccare sulla finestra che c'è dietro (in questo caso su Mozilla), e poi dopo sulla barra menu clicco sul mio programma per metterlo dinuovo davanti alla finestra di Mozilla, e mi compare col contenuto vuoto, completamente grigia...
Ho provato con jdk5, 6 e su un'altra partizione, ma non riesco a risolvere il problema. C'è qualcuno che mi spiega perchè succedono ste cose? E' da pochissimo che mi sto avvicinando a Java, ma questo problema mi scoraggia parecchio...
|
|
total (Member)
Guru
Messaggi: 815
Iscritto: 16/09/2006
|
Non sono molto pratico di paint() comunque ho cercato un pochetto su google...
PRima di tutto ti consiglio di fare tutte le prove del caso... reinstallando le jdk o aggiornandole.
e poi ho trovato questo non so se è il tuo caso ma dacci un occhiata:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6215263
In ogni caso non ti scorraggiare.. Java ha le sue pecche come tutti gli altri linguaggi ma è comunque un ottimo linguaggio per qualsiasi tipo di programma...
|
|
The Lizard King (Member)
Rookie
Messaggi: 33
Iscritto: 10/06/2007
|
Da quel che ho potuto capire il problema è un altro... non è che il problema possa risiedere nella scheda video? Ho una vecchia GeForce4...
|
|
netarrow (Admin)
Guru^2
Messaggi: 2502
Iscritto: 12/05/2004
|
Se vuoi specificare il disegno di componenti grafici GUI stile finestre, pannelli ecc... devi usare paintComponent e come prima istruzione dare il comando
super.paintComponent(g)
per disegnare gli elementi base del componente e dopo di essi dare le altre tue istruzioni di personalizzazione.
Ultima modifica effettuata da netarrow il 25/01/2008 alle 21:10 |
|
The Lizard King (Member)
Rookie
Messaggi: 33
Iscritto: 10/06/2007
|
Postato originariamente da netarrow:
Se vuoi specificare il disegno di componenti grafici GUI stile finestre, pannelli ecc... devi usare paintComponent e come prima istruzione dare il comando
super.paintComponent(g)
per disegnare gli elementi base del componente e dopo di essi dare le altre tue istruzioni di personalizzazione. |
Mi da errore... forse devo importare qualche libreria in particolare? Sei sicuro che così potrei risolvere il mio problema? Oppure come ho scritto prima, potrebbe essere che ho la scheda video vecchiotta? |
|
netarrow (Admin)
Guru^2
Messaggi: 2502
Iscritto: 12/05/2004
|
io ho usato schede video anche più vecchie e non ho avuto problemi.
Se tu stai usando paint dentro un Component come pannelli, finestre, bottoni e simili devi usare paintComponent non paint; paint lo userai dentro un Applet, un Canvas e simili.
Qui hai un esempio: http://www.ba.infn.it/~zito/corso/corso2005/lez6/lezione6. ...
Se poi non risolvi e il problema è un altro posta magari il sorgente.
|
|
The Lizard King (Member)
Rookie
Messaggi: 33
Iscritto: 10/06/2007
|
No, uso un semplicissimo JFrame, ecco il codice:
Codice sorgente - presumibilmente Java |
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ShowColors extends JFrame { public ShowColors() { setTitle("Using colors"); setSize(500,150); setResizable(false); setDefaultCloseOperation (JFrame. EXIT_ON_CLOSE); setLocationRelativeTo(null); setVisible(true); } { super.paint(g); g. setColor(new Color(255,0,0 )); g.fillRect(25,35,100,30); g.drawString("Current RGB: "+g.getColor(),130,50); g. setColor(new Color(0.0f,1.0f,0.0f )); g.fillRect(25,60,100,30); g.drawString("Current RGB: "+g.getColor(),130,75); g.fillRect(25,85,100,30); g.drawString("Current RGB: "+g.getColor(),130,100); g.setColor(color); g.fillRect(25,110,100,25); g.drawString("RGB values: "+color.getRed()+", "+color.getGreen()+", "+color.getBlue(),130,125); } public static void main (String[] args ) { JFrame finestra = new ShowColors (); } }
|
Puoi gentilmente provare ad aprire il programma, cliccare su un'altra finestra e poi ritornare al programma e vedere se la finestra diventa vuota?? Purtroppo non posso provare su altri computer
Ultima modifica effettuata da The Lizard King il 26/01/2008 alle 17:17 |
|
netarrow (Admin)
Guru^2
Messaggi: 2502
Iscritto: 12/05/2004
|
ah ok usi una nofmale jFrame quindi dovrebbe andare e infatti a me va.
A questo punto rimane la possibilità che hai detto che sia vecchia la scheda ma mi fa strano, io ho usato Java su schede molto vecchie senza problemi; un tentativo potrebbe essere usare una versione del JDK più vecchia.
O tentare di creare un JPanel separato che usa paintComponent da inserire dentro la jFrame invece di disegnare direttamente dentro la finestra come fai.
|
|
The Lizard King (Member)
Rookie
Messaggi: 33
Iscritto: 10/06/2007
|
Ho provato sia con JDK 5 sia con 6... comunque, come faccio a disegnare in JPanel? Siccome la funzione paint() si avvia automaticamente senza richiamarla nel JFrame...?
|
|