JFrame non

di il
2 risposte

JFrame non

Ho un dilemma con JFrame e sicuramente mi sto perdendo in un bicchiere d'acqua.
Sto solo tentando di creare una finestra senza particolari proprietà e tutto va bene. Appena tento di inserire forme, scritte o disegni il tutto non funziona. Lo stesso codice su linux funziona senza alcun problema.
Ho provato a modificarlo creando un istanza di JFrame
JFrame frame = new JFrame("Prova JFrame");
ma non mi ha aiutato.

Potreste dirmi dove sto sbagliando per piacere?
package test;

// import
import javax.swing.JFrame;
import java.awt.Graphics;

public class Test extends JFrame{
	
	// constructor
	public Test(){
		JFrame frame = new JFrame("Prova JFrame");
		frame.setTitle("Prova JFrame - titole");
		frame.setSize(200, 200);
		frame.setResizable(false);
		frame.setVisible(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
	
	// paint class
	public void paint(Graphics g){
		g.drawString("Hello World", 50, 50);
		repaint();
		
	}
	
	// main class
	public static void main(String[] args){
		new Test();
		
	}
}

2 Risposte

  • Re: JFrame non

    iprocon ha scritto:


    Appena tento di inserire forme, scritte o disegni il tutto non funziona. Lo stesso codice su linux funziona senza alcun problema.
    Innanzitutto qui c'è un bel po' di confusione. Test è un JFrame e lo istanzi nel main. Ma nel costruttore di Test vai a creare un altro nuovo JFrame.
    La istanza di Test, pur essendo una "finestra" non ci fai/imposti niente di particolare (dimensioni, renderlo visibile, ecc...) e quindi non lo vedi.
    La finestra di 200x200 resta vuota, perché non centra nulla con il paint che hai scritto (quello al massimo sarebbe per la istanza di Test).

    Inoltre, JFrame ha una struttura più complessa del "vecchio" Frame di AWT, perché contiene un JRootPane il quale contiene, tra altre cose, il ben noto "content pane" che è dove si mettono di norma i componenti.
    Per questo motivo, fare il "paint" direttamente in JFrame è sconsigliato a meno che sai esattamente perché e cosa comporta.

    Infine, fare un repaint(); dentro un paint ..... brr, una cosa assolutamente da NON fare mai!

    No, mi spiace, così non è un buon inizio ...
  • Re: JFrame non

    =( uff... mi sa che ho seguito forse guide datate o con spiegazioni non complete oppure non ponderate bene. Tanto per capire ho curiosato adirittura su 4-5 tutorial online dove persone creavano varie GUI ed anche giochi e sono similissimi. Forse però alcuni sono molto vecchi... io usavo due guide scaricate dal web. Uno vi giuro che ha questo come inzio per spiegare le gui. Identico. E di fatti su linux non fa una piega
Devi accedere o registrarti per scrivere nel forum
2 risposte