PDA

View Full Version : [JAVA] JFrame e paint()


Oiziorbaf
01-07-2004, 21:57
Ciao, magari la domanda vi può sembrare stupida.... guardate questo codice:


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.*;

class moto extends JFrame implements ActionListener{
JFrame frame;
public JButton bott[]=new JButton[6];
public Image scooter[]=new Image[3];
public int soldi;

moto(){
init();
}

public void init(){
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
frame.pack();
frame.setSize(800,600);
frame.setVisible(true);
bott[0]=new JButton("I tuoi Dati");
bott[0].addActionListener(this);
frame.getContentPane().add(bott[0]);
bott[0].setBounds(10,10,40,50);
repaint();
}

public void paint(Graphics g){
g.drawString("CIAO",350,200);
}


public static void main(String args[]){
moto sr=new moto();
}

public void actionPerformed(ActionEvent ae){
}

}



Ecco io vorrei sapere xkè nn mi scrive la stringa sul frame!!
Volevo usare il paint per scrivere delle cose anzichè usare dell eJLabel ke diventerebbe palloso....

Ciao e un grazie così
:sofico: a tutti quelli ke mi risponderanno

Zeus84
01-07-2004, 22:33
è un pò che non giocherello col java, ma se ricordo bene il metodo da ridefinire per disegnare sul panello e il paintComponent(Graphics g)...
non garantisco niente...

Oiziorbaf
01-07-2004, 22:38
No, ho provato così

public void paintComponent(Graphics g){
g.drawStringt("CIAO",350,200);
}

ma nn funzia.....nessun'altra idea????
Ciao e grazie

PGI
02-07-2004, 00:09
Il tuo paint appartiene agli oggetti "moto", che sono dei JFrame. Il problema è che non visualizzi una finestra di tipo "moto" ma un normale JFrame.

Se hai bisogno di qualche suggerimento sull'uso del framework Swing chiedi senza remore :D

Ciao.

Oiziorbaf
02-07-2004, 08:34
L'avevo pensatoa ankio questo motivo.....allora usaerò il frame con moto.....poi se avrò altri errori ti kiederò ancora...
ciao e grazie

end.is.forever
02-07-2004, 09:51
Originariamente inviato da Oiziorbaf

JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
frame.pack();
frame.setSize(800,600);
frame.setVisible(true);
bott[0]=new JButton("I tuoi Dati");
bott[0].addActionListener(this);
frame.getContentPane().add(bott[0]);
bott[0].setBounds(10,10,40,50);
repaint();



Dato che moto estende JFrame non hai bisogno di istanziare un nuovo JFrame con new JFrame()
ti basta chiamare tutti quei metodi su this.

Poi nel metodo paint dovresti richiamare super.paint()
questo perchè (almeno in teoria) quando il tuo moto viene disegnato devi gestire il disegno per esempio dei bordi, della scritta col titolo della finestra ecc...
E questo lo fa il paint di JFrame.

Un'ultima cosa, nel metodo main mi sembra che tu non fai moto.show()
se non sbaglio (e' una vita che non uso Swing) dovresti farlo.

Ciao :)

Oiziorbaf
02-07-2004, 18:21
ho provato a fare come mi hai detto te...ma super.paint() da errore, poi se metto a tutti i metodi this mi da un errore di esecuzione e nn devo fare moto.show() xkè al massimo è sr.show(). Cmq grazie lo stesso....se hai ancora qualke dritta serà ben accetta!!!
CIAO

end.is.forever
02-07-2004, 22:24
La chiamata a super.paint() dev'essere la prima chiamata del metodo, se no ti da errore.

Per quanto riguarda show() intendevo sr.show() sorry :)

Oiziorbaf
03-07-2004, 08:49
Anke se lo metto come prima riga mi da errore lo stesso.... Come errore dice cannot resolve symbol.....:cry: va be, grazie lo stesso!

end.is.forever
03-07-2004, 11:03
Ah gia scusa, super.paint( g );
gli devi passare l'oggetto Graphics che ti e' stato passato dalla chiamata

Oiziorbaf
03-07-2004, 14:33
OK, ora ho fatto così:


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.*;

class moto extends JFrame implements ActionListener{
JFrame frame;
public JButton bott[]=new JButton[6];
public Image scooter[]=new Image[3];
public int soldi;

moto(){
init();
}

public void init(){
bott[0]=new JButton("I tuoi Dati");
bott[0].addActionListener(this);
getContentPane().add(bott[0]);
bott[0].setBounds(10,10,40,50);
repaint();
}

public void paint(Graphics g){
super.paint(g);
g.drawString("CIAO",350,200);
}


public static void main(String args[]){
moto sr=new moto();
sr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
sr.getContentPane().setLayout(null);
sr.pack();
sr.setSize(800,600);
sr.setVisible(true);

}

public void actionPerformed(ActionEvent ae){
}

}



E funziona.....
Grazie mille per tutto....se ho altri problemini te li kiederò!!!
Ciao e ancora grazie!