Newsgroup: it.comp.java
Titolo: Passaggio variabili tra classi

Salve,
devo presentare un progetto in java per l'ultimo esame all'uni,ma nn
riesco a superare degli ostacoli.
Non riesco in pratica a passare le variabili (una stringa e 4 colori)
da una classe contenente un jframe con annessa una textfield, e un
jcolorchooser x la scelta dei colori.
pensavo di farlo tramite parametri, ma non riesco a capire come fare..
di seguito riporto il codice delle due classi:
Classe contenente il JFrame di input (a sua volta viene richiamato da
un'altra classe principale che contiene il main)
----------------------------------------------------------------
package quadretti;
import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class FrameInput extends JFrame implements ActionListener{
private JTextField inputN;
private JLabel labelN, labelColors;
	public FrameInput()
	{
	super(" Inserisci i dati:");
	setSize(200, 300);
	getContentPane().setLayout(new GridLayout(8,1));
	inputN = new JTextField();
	labelN = new JLabel();
	labelN.setText(" Inserisci il numero di quadretti N:");
	getContentPane().add(labelN);
	getContentPane().add(inputN);
	JButton colorButton1 = new JButton("Scegli il 4 Colori");
	colorButton1.addActionListener(this);
	getContentPane().add(colorButton1);
	JButton okButton = new JButton("Procedi >>");
	okButton.addActionListener(this);
	getContentPane().add(okButton);
	JLabel label1c = new JLabel();
	label1c.setText("1° Colore");
	getContentPane().add(label1c);
	JLabel label2c = new JLabel();
	label2c.setText("2° Colore");
	getContentPane().add(label2c);
	JLabel label3c = new JLabel();
	label3c.setText("3° Colore");
	getContentPane().add(label3c);
	JLabel label4c = new JLabel();
	label4c.setText("4° Colore");
	getContentPane().add(label4c);
	setVisible(true);
	setResizable(false);
	setLocationRelativeTo(null);
	}
	public void actionPerformed(ActionEvent e) {
//		 Args are parent component, title, initial color
		Color Color1 = JColorChooser.showDialog(this,"Scegli il 1° Colore",
getBackground());
		if (Color1!= null){}
		Color Color2 = JColorChooser.showDialog(this,"Scegli il 2° Colore",
getBackground());
		Color Color3 = JColorChooser.showDialog(this,"Scegli il 3° Colore",
getBackground());
		Color Color4 = JColorChooser.showDialog(this,"Scegli il 4° Colore",
getBackground());
		System.out.println(Color1);
		System.out.println(Color2);
		System.out.println(Color3);
		System.out.println(Color4);
		String n = inputN.getText();
		JFrame f =new JFrame();
		f.setSize(650, 676);
		f.getContentPane().add(new Quadretti());
//(n,Color1,Color2,Color3,Color4 questi sono i parametri che vorrei
passare
		f.setVisible(true);
		f.setLocationRelativeTo(null);
		}
}
------------------------------------------------------------------
Classe contenente il compito che il programma deve svolgere e a cui
devo passare le variabili:
----------------------------------------------------------------
package quadretti;
import java.awt.*;
import javax.swing.*;
public class Quadretti extends JComponent{
 /*  vorrei ottenere una chiamata ad un metodo del genere:public void
disegnaQuadretti (int n, Color colore1, Color colore2, Color colore3,
Color colore4){
     }*/
	public void paintComponent(Graphics g){
	...
	... codice dell'esercizio che necessita di n + i 4 colori che io per
prova definisco all'interno di questo metodo, ma che necessito di
scegliere dal frame della classe precedente..
			}
	}
}
---------------------------------------------------------
Come posso fare per passare queste variabili?
X favore aiutatemi che l'esame è alle porte :|
Ringrazio anticipatamente.

qualcuno mi aiuta? :|

e come lo passo all'altra classe? :(
sto uscendo pazzo..

 sto uscendo pazzo..
Se non riesci a sintetizzare il problema è impossibile aiutarti.
Non si può debuggare un programma per capire dov'è che ti areni...

Ok spero di riuscire a spiegarmi meglio..
Devo scrivere un'applicazione che ricevendo in input un intero (n) e 4
colori, disegni un quadrato formato da n*n quadratini (dove n è il
numero che abbiamo ricevuto in input) di colore uno diverso dall'altro
in modo tale che ogni quadratino non confini con uno dello stesso
colore... e questo l'ho risolto.. solo che utilizzo delle variabili
globali (per provarne il funzionamento) definite all'interno di questa
classe, e che invece dovrei ricevere dall'altra classe tramite un
JPanel contenente un JTextField e un filechooser.
Allego le 2 classi
questa classe assolve il compito dato, e x variare n devo cambiarlo
manualmente dal codice, così come i colori, che x adesso sono quei 4
definiti
---------------------------------------------------------------------
package quadretti;
import java.awt.*;
import javax.swing.*;
public class Quadretti extends JComponent{
	private Color[] colors=
{Color.RED,Color.YELLOW,Color.GREEN,Color.BLUE};
	int n = 8;
	private Color colore;
/*qui al posto di paintComponent vorrei avere: public void
disegnaQuadretti (int nq, Color colore1, Color colore2, Color colore3,
Color colore4){
*in modo tale da poter passare come parametri a questo metodo un intero
e 4 colori che prendo in input da un'altra classe tramite JTextfiled e
Jfilechooser
		public void paintComponent(Graphics g){
	//Calcolo il lato a partire dalle dimensioni della finestra
	Dimension size = getSize();
	int l = (size.height) / n;
	int x = 0;
	int y = 0;
	int savecolor = 0;
//ciclo che mi fa n passate in base all'n inserito (colonne del
quadrato)
		for(int j=n; j > 0; j--)
			{
			//Ciclo interno che disegna n quadretti x colonna alternandoli di
colore.
			for (int i=0; i < n; i++)
			{
			// Scelgo il colore a rotazione e disegno i quadrati in base alle
coordinate e al lato
			g.setColor(colors[savecolor%4]);
			g.fillRect(x,y,l,l);
			// Mi sposto in verticale.
			y = y + l ;
			savecolor++;
			//repaint(); // per invocare il refresh della frame.
			}
			if (n % 4 == 0){ savecolor++; } // Se n in ingresso è un multiplo
di 4:
			//finita la riga mi sposto in orizzontale e parto dall'alto.
			x = x + l;
			y = 0 ;
			}
		}
//Punto da sviluppare: Salvataggio dei dati inseriti (n e i 4 colori)
nel DB.
	}
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Questa è la classe invece che contiene l'interfaccia da cui dovrei
ricavare gli input (n e colori), il main è contenuto in un'altra
classe che richiama quest'ultima e che no ci interessa.
____________________________________________________________________________________________
package quadretti;
import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class FrameInput extends JFrame implements ActionListener{
private JTextField inputN;
private JLabel labelN, labelColors;
private int numero;
private Color colore1, colore2, colore3, colore4;
	public FrameInput()
	{



	getContentPane().add(labelN);
	getContentPane().add(inputN);






	setVisible(true);
	setResizable(false);
	setLocationRelativeTo(null);
	}
	public void actionPerformed(ActionEvent e) {
//		Parametri: componente, titolo, colore iniziale
		colore1 = JColorChooser.showDialog(this,"Scegli il 1° Colore",
getBackground());
		//if (colore1!= null){
		colore2 = JColorChooser.showDialog(this,"Scegli il 2° Colore",
getBackground());
		colore3 = JColorChooser.showDialog(this,"Scegli il 3° Colore",
getBackground());
		colore4 = JColorChooser.showDialog(this,"Scegli il 4° Colore",
getBackground());
		System.out.println(colore1);
		System.out.println(colore2);
		System.out.println(colore3);
		System.out.println(colore4);
		String n = inputN.getText();
	   try {
		    numero = Integer.parseInt(n);
			System.out.println(numero);
			if (colore1 == null) {JOptionPane.showMessageDialog(null, "Non hai
scelto il 1° colore");}
			if (colore2 == null) {JOptionPane.showMessageDialog(null, "Non hai
scelto il 2° colore");}
			if (colore3 == null) {JOptionPane.showMessageDialog(null, "Non hai
scelto il 3° colore");}
			if (colore4 == null) {JOptionPane.showMessageDialog(null, "Non hai
scelto il 4° colore");}
			JFrame f =new JFrame();
			f.setSize(650, 676);
			f.getContentPane().add(new Quadretti());
			f.setVisible(true);
			f.setLocationRelativeTo(null);
	   }
	   catch(NumberFormatException nfe){
				JOptionPane.showMessageDialog(null, "Dato inserito in Input, non
valido!");
		    }
	   }
}
______________________________________________________________________________________________________
Il mio problema è: come devo fare per poter passare come argomenti
alla prima classe (quella ceh disegna il tutto), l'n che do in input e
i 4 colori?
Ho l'ultimo esame alle porte e vi sarei grato se mi aiutaste..

 ha scritto nel messaggio 
news:1126810073.3...@g47g2000cwa.googlegroups.com...
Ok spero di riuscire a spiegarmi meglio..
Devo scrivere un'applicazione che ricevendo in input un intero (n) e 4
colori, disegni un quadrato formato da n*n quadratini (dove n č il
numero che abbiamo ricevuto in input) di colore uno diverso dall'altro
in modo tale che ogni quadratino non confini con uno dello stesso
colore... e questo l'ho risolto.. solo che utilizzo delle variabili
globali (per provarne il funzionamento) definite all'interno di questa
classe, e che invece dovrei ricevere dall'altra classe tramite un
JPanel contenente un JTextField e un filechooser.
Allego le 2 classi
questa classe assolve il compito dato, e x variare n devo cambiarlo
manualmente dal codice, cosě come i colori, che x adesso sono quei 4
definiti
---------------------------------------------------------------------
package quadretti;
import java.awt.*;
import javax.swing.*;



public void paintComponent(Graphics g){







if (n % 4 == 0){ savecolor++; } // Se n in ingresso č un multiplo
di 4:
//finita la riga mi sposto in orizzontale e parto dall'alto.
x = x + l;
y = 0 ;
}
}
//Punto da sviluppare: Salvataggio dei dati inseriti (n e i 4 colori)
nel DB.
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Questa č la classe invece che contiene l'interfaccia da cui dovrei
ricavare gli input (n e colori), il main č contenuto in un'altra

import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


public FrameInput()
{



getContentPane().add(labelN);
getContentPane().add(inputN);






setVisible(true);
setResizable(false);
setLocationRelativeTo(null);
}









   }
}
______________________________________________________________________________________________________
Il mio problema č: come devo fare per poter passare come argomenti


Pb che tu ci creda o no.. ero fermo da 2 giorni in quel punto..
Non so come ringraziarti!!!
Grazie Mille!!
:)

!!
prego :)
-- 
