ciao a tutti ho un frame con una barra dei menu che si chiama "Dimensione" contenente gli item "piccolo", "medio", "grande"; questi devono far cambiare la dimensione del mio pallino.(per esempio se scelgo piccolo il mio pallino è piccolo ecc...)vi posto il mio codice in cui ho problemi con il repaint!!!(penso)
Questa è una classe:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class secondoFrame extends JFrame implements ActionListener
{
private int larghezzaSchermo,altezzaSchermo;
pallinoPanel palla;
JMenuItem piccolo,medio,grande;
public secondoFrame()
{
setTitle("Esperimento");
setDefaultCloseOperation(EXIT_ON_CLOSE);
Toolkit mioTKit=Toolkit.getDefaultToolkit();
Dimension dSchermo=mioTKit.getScreenSize();
larghezzaSchermo=dSchermo.width;
altezzaSchermo=dSchermo.height;
setSize(larghezzaSchermo,altezzaSchermo);
setLocation(0,0);
Container contentPane=getContentPane();
palla=new pallinoPanel();
contentPane.add(palla);
JMenuBar barraMenu = new JMenuBar();
JMenu Dimen = new JMenu("Dimensione");
piccolo = new JMenuItem("piccolo");
medio = new JMenuItem("medio");
grande = new JMenuItem("grande");
piccolo.addActionListener(this);
medio.addActionListener(this);
grande.addActionListener(this);
Dimen.add(piccolo);
Dimen.add(medio);
Dimen.add(grande);
barraMenu.add(Dimen);
setJMenuBar(barraMenu);
}
public void actionPerformed(ActionEvent e)
{
Object source=e.getSource();
if (source==piccolo)
{
palla.pic=!palla.pic;
palla.repaint();
}
/*if (source==medio)
{
palla.med=!palla.med;
palla.repaint();
}
if (source==grande)
{
palla.gra=!palla.gra;
palla.repaint();
} */
}
public int getLarghezzaSchermo()
{ return larghezzaSchermo;}
public int getAltezzaSchermo()
{ return altezzaSchermo;}
}
questa è l'altra:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class pallinoPanel extends JPanel
{
boolean pic,med,gra;
public pallinoPanel()
{
super();
pic=false;
//med=false;
//gra=false;
setBackground(Color.black);
setForeground(Color.white);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Dimension dimensioniPanel=getSize();
int posX=(int)(Math.random()*dimensioniPanel.width);
int posY=(int)(Math.random()*dimensioniPanel.height);
if(!pic)
{
g.fillOval(posX-50,posY-50,50,50);
//repaint();
}
if(pic)
{
g.fillOval(posX-50,posY-50,50,50);
//repaint();
}
/* if(!med)
{
g.fillOval(posX-130,posY-130,130,130);
//repaint();
}
if(med)
{
g.fillOval(posX-130,posY-130,130,130);
//repaint();
}
if(!gra)
{
g.fillOval(posX-250,posY-250,250,250);
//repaint();
}
if(gra)
{
g.fillOval(posX-250,posY-250,250,250);
//repaint();
}*/
}
}
con l'opzione "piccolo" funziona ma appena metto gli altri nn piu!
spero di essere stata chiara e vorrei un'aiuto! grazieee![]()

Rispondi quotando