Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Problema inspiegabile di grafica...
Forum - Java - Problema inspiegabile di grafica...

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
The Lizard King (Member)
Rookie


Messaggi: 33
Iscritto: 10/06/2007

Segnala al moderatore
Postato alle 16:01
Martedì, 22/01/2008
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...

PM Quote
Avatar
total (Member)
Guru


Messaggi: 815
Iscritto: 16/09/2006

Segnala al moderatore
Postato alle 13:33
Mercoledì, 23/01/2008
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...

PM Quote
Avatar
The Lizard King (Member)
Rookie


Messaggi: 33
Iscritto: 10/06/2007

Segnala al moderatore
Postato alle 14:52
Mercoledì, 23/01/2008
Da quel che ho potuto capire il problema è un altro... non è che il problema possa risiedere nella scheda video? Ho una vecchia GeForce4...

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 21:10
Venerdì, 25/01/2008
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
PM Quote
Avatar
The Lizard King (Member)
Rookie


Messaggi: 33
Iscritto: 10/06/2007

Segnala al moderatore
Postato alle 12:54
Sabato, 26/01/2008
Testo quotato

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?

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 14:53
Sabato, 26/01/2008
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.

PM Quote
Avatar
The Lizard King (Member)
Rookie


Messaggi: 33
Iscritto: 10/06/2007

Segnala al moderatore
Postato alle 17:16
Sabato, 26/01/2008
No, uso un semplicissimo JFrame, ecco il codice:

Codice sorgente - presumibilmente Java

  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4.  
  5. public class ShowColors extends JFrame
  6. {
  7.     public ShowColors()
  8.     {
  9.         setTitle("Using colors");
  10.         setSize(500,150);
  11.         setResizable(false);
  12.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  13.         setLocationRelativeTo(null);
  14.         setVisible(true);
  15.     }
  16.    
  17.     public void paint(Graphics g)
  18.     {
  19.         super.paint(g);
  20.         g.setColor(new Color(255,0,0));
  21.         g.fillRect(25,35,100,30);
  22.         g.drawString("Current RGB: "+g.getColor(),130,50);
  23.        
  24.         g.setColor(new Color(0.0f,1.0f,0.0f));
  25.         g.fillRect(25,60,100,30);
  26.         g.drawString("Current RGB: "+g.getColor(),130,75);
  27.        
  28.         g.setColor(Color.BLUE);
  29.         g.fillRect(25,85,100,30);
  30.         g.drawString("Current RGB: "+g.getColor(),130,100);
  31.        
  32.         Color color = Color.MAGENTA;
  33.         g.setColor(color);
  34.         g.fillRect(25,110,100,25);
  35.         g.drawString("RGB values: "+color.getRed()+", "+color.getGreen()+", "+color.getBlue(),130,125);
  36.     }
  37.    
  38.     public static void main(String[] args)
  39.     {
  40.        JFrame finestra = new ShowColors();
  41.     }
  42. }



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 :d

Ultima modifica effettuata da The Lizard King il 26/01/2008 alle 17:17
PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 18:42
Sabato, 26/01/2008
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.

PM Quote
Avatar
The Lizard King (Member)
Rookie


Messaggi: 33
Iscritto: 10/06/2007

Segnala al moderatore
Postato alle 19:14
Sabato, 26/01/2008
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...?

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo