- 32
- 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:
Panel
Frame:
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.
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.