Problema applet generico che aggiunge elementi (java)

abenobashi

Utente Attivo
36
2
CPU
Intel Q9550
Scheda Madre
Asus P5Q Pro Turbo
HDD
Western Digital Caviar Green 1,5TB, 7200rpm, 64MB
RAM
Patriot Memory DDR2 1066MHz 4GB
GPU
GTX 460 SuperClocked
Audio
Integrata
Monitor
TV T260 HD
PSU
Thermaltake ToughPower 650W
Case
Enermax Phoenix
OS
Windows 7 Enterprise 32bit & 64bit
Sto creando un applet generico contenente una classe Elementi che disegna una pallina di colore nero in un punto randomizzato. Poi ho un Frame contenente due bottoni "New" (che aggiunge un elemento cioè una pallina all'interno del pannello) e il bottone "Delete" (che serve ad eliminare un elemento selezionazo ma che devo ancora implementare). Ovviamente il pannello l'ho già trascinato all'interno del frame. Non capisco come mai viene subito stampata una pallina e quando premo sul bottone "Add" non mi aggiunge nulla. Vi posto il codice delle tre classi:

Elementi:

Codice:
import java.awt.Color;
import java.awt.Graphics;
/**
 *
 * @author Abenobashi
 */
public class Elementi{

    int r;
    int x;
    int y;

    public Elementi(){
        r = 50; // Variabile assegnata al raggio largo 50px
        x = (int)(Math.random() * 1000); // Posizione x della pallina randomizzata da 0 a 1000
        y = (int)(Math.random() * 1000); // Posizione y della pallina randomizzata da 0 a 1000
    }

    /*Paint che stampa tutti gli elementi da visualizzare*/
    public void paint (Graphics g)
    {
        g.setColor(Color.black); // Rende tutti i prossimi oggetti stampati di colore nero
        g.fillOval(x, y, r, r); // Stampa una pallina con le sue relative proprietà
    }
}

Panel
Codice:
import java.awt.Graphics;
/**
 *
 * @author Abenobashi
 */
public class Panel extends java.awt.Panel {
    public Elementi elementi;

    /** Creates new form Panel */
    public Panel() {
        initComponents(); // Inizializza tutti i componenti
        elementi = new Elementi(); // Viene istanziata la variabile oggetto 'elementi'
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        setLayout(new java.awt.BorderLayout());
    }// </editor-fold>                        
    @Override
    public void paint(Graphics g){
        elementi.paint(g);
    }

    // Variables declaration - do not modify                     
    // End of variables declaration                   

}

Frame:
Codice:
import java.awt.Cursor;
/**
 *
 * @author Abenobashi
 */
public class Frame extends java.awt.Frame {
    Elementi elementi;

    /** Creates new form Frame */
    public Frame() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jToolBar1 = new javax.swing.JToolBar();
        jToolBar2 = new javax.swing.JToolBar();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        panel1 = new Panel();

        jToolBar1.setRollover(true);

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        jToolBar2.setRollover(true);

        jButton1.setText("Add");
        jButton1.setActionCommand("jbAdd");
        jButton1.setFocusable(false);
        jButton1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButton1.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        jToolBar2.add(jButton1);

        jButton2.setText("Delete");
        jButton2.setActionCommand("jbDelete");
        jButton2.setFocusable(false);
        jButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToolBar2.add(jButton2);

        add(jToolBar2, java.awt.BorderLayout.NORTH);
        add(panel1, java.awt.BorderLayout.CENTER);

        pack();
    }// </editor-fold>                        

    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {                          
        System.exit(0);
    }                         

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        panel1.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
        elementi = new Elementi();
        panel1.repaint();
    }                                        

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Frame().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JToolBar jToolBar1;
    private javax.swing.JToolBar jToolBar2;
    private Panel panel1;
    // End of variables declaration                   

}

Buona parte del codice del Panel e del Frame è stato già creato in automatico siccome utilizzo NetBeans per fare progetti in java.

Ringrazio anticipatamente nel caso riusciate a risolvere questo problema.
 

Entra

oppure Accedi utilizzando

Hot: PS5 VS XBOX X/S?

  • Playstation 5

    Voti: 273 62.5%
  • XBOX Series X/S

    Voti: 164 37.5%

Discussioni Simili