Buongiorno, ho la necessità di passare il valore di una variabile da una classe all'altra...
chi sa aiutarmi???????????
Buongiorno, ho la necessità di passare il valore di una variabile da una classe all'altra...
chi sa aiutarmi???????????
Ma così dici niente .... come sono fatte le tue classi? Quali oggetti hai istanziato? Dove e come deve essere assegnato il valore?Originariamente inviato da tax971
ho la necessità di passare il valore di una variabile da una classe all'altra...
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Ho 2 jpanel, il primo richiama il secondo, sul secondo ho bisogno di avere un valore che inserisco in una casella di testo nel primo
Devo essere più esplicito??
Questo è il codice, la prima classe richiama la seconda, a cui deve passare il valore della JTextField...codice:class JCambioNCoils extends JPanel implements ActionListener { public JTextField matr; public JLabel lmatr; public JButton cerca; public Connection con; public Statement st; public int result; public JTable tabella; public String[] Squal, colHeads; public int i; public String vmatr; public Object[][] data; public JCambioNCoils() { matr = new JTextField(10); lmatr = new JLabel("Matricola"); cerca = new JButton(" Cerca "); lmatr.setBounds(70,30,100,25); matr.setBounds(70,50,100,30); cerca.setBounds(250,50,150,30); add(lmatr); add(matr); add(cerca); matr.addActionListener(this); cerca.addActionListener(this); } public void actionPerformed(ActionEvent evento) { Object s2 = evento.getSource(); if (s2==cerca) { int xLoc=300, yLoc=50; valoriTabella1 frame11 = new valoriTabella1(xLoc,yLoc); frame11.setVisible(true); } } } class cambioNCoils extends JFrame { public cambioNCoils(int xLoc,int yLoc) { setSize(480,200); setTitle("Certificati S.I.M. s.r.l. Cambio Matricola Coils by Antonio Pompilii"); setResizable(false); setLocation(xLoc,yLoc); JCambioNCoils JCambioNCoils1 = new JCambioNCoils(); Container contentPane = getContentPane(); JCambioNCoils1.setLayout(null); contentPane.add(JCambioNCoils1); } } class valoriTabella extends JPanel { public Connection con; public Statement st; public int results; public String upd, piro, vmatr; JTable tabella; JTextField J1, J2; public valoriTabella() { int i,i1; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection("jdbc:odbc:Coils"); st = con.createStatement(); upd = "SELECT * FROM Coils1 WHERE fmatr = '"+ vmatr +"';"; ResultSet results = st.executeQuery(upd); i=1; String[] colHeads = {"Qualità"}; String[] Squal = new String[5]; Squal[1]=""; Squal[2]=""; Squal[3]=""; Squal[4]=""; while (results.next()) { Squal[i] =results.getString("fmatr"); i++; } i=1; Object[][] data = { {Squal[1],i}, {Squal[2],i}, {Squal[3],i}, {Squal[4],i}, }; JTable tabella = new JTable(data,colHeads); JScrollPane jsp = new JScrollPane(tabella); add(tabella); } catch(Exception e) { J2.setText("Errore: "+e); } } } class valoriTabella1 extends JFrame { public valoriTabella1(int xLoc,int yLoc) { setSize(150,400); setTitle("Certificati S.I.M. s.r.l. by Antonio Pompilii"); setResizable(false); setLocation(xLoc,yLoc); valoriTabella valoriTabella2 = new valoriTabella(); Container contentPane = getContentPane(); contentPane.add(valoriTabella2); } }
Regolamento, punto 6: utilizzare i tag CODE (non LIST) quando si posta il codice, per facilitare la lettura... altrimenti diventa tutto un'accozzaglia...
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Per il tuo problema... puoi semplicemente passare al costruttore del secondo, un riferimento del primo. Quindi, nel primo, prevedere una serie di metodi per poter accedere ai membri privati.
Così, nel primo JPanel, che richiama il secondo:
Nel secondo, avrai questo costruttore:codice:SecondoJPanel sjp = new SecondoJPanel( this );
E, nel secondo, lavori sul primo utilizzando la variabile privata "pjp".codice:private PrimoJPanel pjp; ... public SecondoJPanel(PrimoJPanel pjp) { ... this.pjp = pjp; }
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Ciao leleFT, intanto grazie per la risposta,
poi ho dimenticato di dire che sono veramente alle prime armi con java,
e non ho propio capito quello che devo fare...
poresti essere un po' più chiaro ...grazie
ps.
scusa per non aver inserito il list, ma non so neanche come si fa...
Sei alle prime armi con Java e usi le interfaccie grafiche? Ricorda che l'utilizzo delle GUI su Java deve avvenire DOPO che si è presa dimestichezza con il linguaggio e, soprattutto, con la filosofia ObjectOriented... altrimenti non si va proprio da nessuna parte.
Ad ogni modo, non ho letto per intero il tuo codice, quindi non so dove tu vada ad istanziare il pannello... certo è che da qualche parte tu avrai un'istruzione new per creare il "secondo pannello"... è lì che devi intervenire, aggiungendo il this all'interno delle parentesi.
E devi intervenire sul costruttore della classe del secondo pannello, come ti ho indicato.
Se non sai cos'è un costruttore, lascia perdere le GUI e concentrati sui fondamenti della OOP (Object Oriented Programming). Senza questi concetti ben chiari, davvero non caverai un ragno dal buco.
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Ciao ancora, essere all prime armi pre me significa che è un mesetto che ci scommetto, in quanto sto facendo un programma per la mia azienda, e vado a vedere quello di cui ho bisogno, man mano che mi occorre... so che non è il modo migliore per approcciare con un linguaggio di programmazione, ma il tempo non è tanto...
Comunque ho inserito il codice comi mi hai detto tu... nella compilazione tutto bene poi nell'esecuzione va in errore... puoi dare un'occhiata... grazie
Ho evidenziato con degli asterischi il codice inserito
codice:class JCambioNCoils extends JPanel implements ActionListener { public JTextField matr; public JLabel lmatr; public JButton cerca; public Connection con; public Statement st; public int result; public JTable tabella; public String[] Squal, colHeads; public int i; public String vmatr; public Object[][] data; public JCambioNCoils() { matr = new JTextField(10); lmatr = new JLabel("Matricola"); cerca = new JButton(" Cerca "); lmatr.setBounds(70,30,100,25); matr.setBounds(70,50,100,30); cerca.setBounds(250,50,150,30); add(lmatr); add(matr); add(cerca); matr.addActionListener(this); cerca.addActionListener(this); } public void actionPerformed(ActionEvent evento) { Object s2 = evento.getSource(); if (s2==cerca) { vmatr=matr.getText(); int xLoc=300, yLoc=50; valoriTabella1 frame11 = new valoriTabella1(xLoc,yLoc); valoriTabella sjp = new valoriTabella(this); //********************* frame11.setVisible(true); } } } class cambioNCoils extends JFrame { public cambioNCoils(int xLoc,int yLoc) { setSize(480,200); setTitle("Certificati S.I.M. s.r.l. Cambio Matricola Coils by Antonio Pompilii"); setResizable(false); setLocation(xLoc,yLoc); JCambioNCoils JCambioNCoils1 = new JCambioNCoils(); Container contentPane = getContentPane(); JCambioNCoils1.setLayout(null); contentPane.add(JCambioNCoils1); } } class valoriTabella extends JPanel { public Connection con; public Statement st; public int results; public String upd, piro, v1matr; JTable tabella; JTextField J1, J2; private JCambioNCoils pjp; //******************************** public valoriTabella() { J2=new JTextField(); add(J2); int i,i1; v1matr = pjp.matr.getText();//****************************** try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection("jdbc:odbc:Coils"); st = con.createStatement(); upd = "SELECT * FROM Coils1 WHERE fmatr = '"+ v1matr +"';"; ResultSet results = st.executeQuery(upd); i=1; String[] colHeads = {"Qualità"}; String[] Squal = new String[5]; Squal[1]=""; Squal[2]=""; Squal[3]=""; Squal[4]=""; while (results.next()) { Squal[i] =results.getString("fmatr"); i++; } i=1; Object[][] data = { {Squal[1],i}, {Squal[2],i}, {Squal[3],i}, {Squal[4],i}, }; JTable tabella = new JTable(data,colHeads); JScrollPane jsp = new JScrollPane(tabella); add(tabella); } catch(Exception e) { } } public valoriTabella(JCambioNCoils pjp)//*************************** { this.pjp=pjp; } } class valoriTabella1 extends JFrame { public valoriTabella1(int xLoc,int yLoc) { setSize(150,400); setTitle("Certificati S.I.M. s.r.l. by Antonio Pompilii"); setResizable(false); setLocation(xLoc,yLoc); valoriTabella valoriTabella2 = new valoriTabella(); Container contentPane = getContentPane(); contentPane.add(valoriTabella2); } }