Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    37

    [JAVA] jFrame e jDialog

    Ciao,
    mi trovo alle prime armi... il mio principale problema è quello di non capire come far passare i valori di variabili tra una jFrame e una jDialog.
    Nella jFrame è presente una jMenuItem (Accedi) che apre una jDialog e chiede il nome utente e la password, controlla se i dati inseriti sono corretti e nel caso in cui è giusto viene settata a true la variabile chiave che deve viene letta ogni qual volta che nella jFrame clicco su una jMenu.
    il problema è che la variabile chiave è sempre settata a falso nonostante cambi il suo valore nella jDialog.


    nella jFrame...
    codice:
    mnNewMenu.addMouseListener(new MouseAdapter() {			@Override
    			public void mouseClicked(MouseEvent e) {
    				Accedi accedi=new Accedi();
    				chiave=accedi.isChiave();
    				if(chiave==true){
    					mntmEsci.setEnabled(true);
    				}
    			}
    		});
    codice:
    public class Accedi extends JDialog {
    public static final int RET_CANCEL = 0;    
        public static final int RET_OK = 1;
    private boolean chiave=false;	private int returnStatus = RET_CANCEL;
    	
    	private void doClose(int retStatus) {
            returnStatus = retStatus;
            setVisible(false);
            this.dispose();
        }
    	
    	public int getReturnStatus() {
            return returnStatus;
        }
    	
    	public boolean isChiave() {
    		return chiave;
    	}
    
    
    	public Accedi() {
    JButton okButton = new JButton("OK");				okButton.addActionListener(new ActionListener() {
    					@SuppressWarnings({ "deprecation", "resource" })
    					public void actionPerformed(ActionEvent arg0) {
    						doClose(RET_OK);
    						String nomeU, password,riga,prova;
    						try {
    							Scanner tast = new Scanner(new FileReader("FileUtenti.txt"));
    							nomeU=NU.getText();
    							password=PS.getText();
    							prova=nomeU+"&&"+password+"&&";
    							
    							while(tast.hasNext()){
    								riga=tast.next();
    								
    								
    								if(riga.equals(prova)){
    									chiave=true;
    								}
    							}
    							
    							if(chiave==false){
    								  JOptionPane.showMessageDialog(null,"Dati non corretti","Error",JOptionPane.ERROR_MESSAGE);
    							}else{
    								doClose(RET_OK);
    							}
    						
    							
    						} catch (FileNotFoundException e1) {
    							e1.printStackTrace();
    						}
    					}
    				});}
    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Java ha un forum dedicato.

    Sposto.


    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

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da iTuring Visualizza il messaggio
    il problema è che la variabile chiave è sempre settata a falso nonostante cambi il suo valore nella jDialog.
    Nel codice postato non vedo un setVisible(true) sulla dialog .... e comunque la tua dialog non è (non risulta dal codice) "modale" (volevi proprio così?).

    Quindi subito dopo new Accedi() se ci invochi isChiave() ottieni il false inizializzato.


    P.S.
    1) Il contesto e architettura della tua applicazione ovviamente non può essere molto chiaro, solo con il poco codice postato.
    2) Il tuo codice, scusa se lo dico, è parecchio "inguardabile" come stile, struttura.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    37
    codice:
    public class Home extends JFrame  {
    	
    	
    
    
    	private JPanel contentPane;
    
    
    	/**
    	 * Launch the application.
    	 */
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					Home frame = new Home();
    					frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
    
    
    	/**
    	 * Create the frame.
    	 */
    	boolean chiave=false;
    	public Home(){
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(100, 100, 663, 361);
    		
    		JMenuBar menuBar = new JMenuBar();
    		setJMenuBar(menuBar);
    		
    		JMenu mnNewMenu = new JMenu("File");
    		
    		
    		
    		menuBar.add(mnNewMenu);
    		
    		JMenuItem mntmRegistrati = new JMenuItem("Registrati");
    		mntmRegistrati.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				Registrati registrati=new Registrati();
    				registrati.setVisible(true);
    			}
    		});
    		mnNewMenu.add(mntmRegistrati);
    	
    		JMenuItem mntmAccedi = new JMenuItem("Accedi");
    		mntmAccedi.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				Accedi accedi=new Accedi();
    				accedi.setVisible(true);
    				chiave=accedi.isChiave();
    			}
    		});
    		mnNewMenu.add(mntmAccedi);
    		
    		JMenuItem mntmEsci = new JMenuItem("Esci");
    		mntmEsci.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				Accedi accedi=new Accedi();
    				boolean chiave=accedi.isChiave();
    				if(chiave==true){
    					mntmEsci.setEnabled(true);
    				}
    			}
    		});
    		mntmEsci.setEnabled(false);
    		
    			
    		mnNewMenu.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				Accedi accedi=new Accedi();
    				if(accedi.isChiave()==true){
    					mntmEsci.setEnabled(true);
    				}
    			}
    		});
    		
    		mnNewMenu.add(mntmEsci);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		contentPane.setLayout(null);
    	}
    	
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    37
    codice:
    public class Registrati extends JFrame {
    
    
    	private JPanel contentPane;
    	private JTextField NU;
    	private JPasswordField PW;
    
    
    	/**
    	 * Launch the application.
    	 */
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					Registrati frame = new Registrati();
    					frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
    
    
    	/**
    	 * Create the frame.
    	 */
    	public Registrati() {
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(100, 100, 312, 265);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		contentPane.setLayout(null);
    		
    		JLabel lblNomeUtente = new JLabel("Nome Utente");
    		lblNomeUtente.setBounds(35, 32, 87, 24);
    		contentPane.add(lblNomeUtente);
    		
    		JLabel lblPassword = new JLabel("Password");
    		lblPassword.setBounds(35, 69, 75, 24);
    		contentPane.add(lblPassword);
    		
    		JLabel LB = new JLabel("");
    		LB.setBounds(12, 106, 270, 64);
    		contentPane.add(LB);
    		
    		NU = new JTextField();
    		NU.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent arg0) {
    				LB.setText("");
    			}
    		});
    		NU.setBounds(134, 33, 116, 22);
    		contentPane.add(NU);
    		NU.setColumns(10);
    		
    		PW = new JPasswordField();
    		PW.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				LB.setText("");
    			}
    		});
    		PW.setBounds(134, 70, 116, 22);
    		contentPane.add(PW);
    		
    		JButton btnOk = new JButton("OK");
    		btnOk.addActionListener(new ActionListener() {
    			@SuppressWarnings({ "resource", "deprecation" })
    			public void actionPerformed(ActionEvent arg0) {
    				try {
    					PrintWriter txt = new PrintWriter(new FileWriter("FileUtenti.txt", true));
    					Scanner tast = new Scanner(new FileReader("FileUtenti.txt"));
    					String nomeUtente, password,riga,ele;
    					String[] dati;
    					boolean chiave=false;
    					
    					nomeUtente=NU.getText();
    					password=PW.getText();
    					
    					if(nomeUtente.equals("")){
    					  chiave=true;
    					  JOptionPane.showMessageDialog(null,"Compilare tutti i campi","Error",JOptionPane.ERROR_MESSAGE);
    					}
    					if(password.equals("")){
    						chiave=true;
    						  JOptionPane.showMessageDialog(null,"Compilare tutti i campi","Error",JOptionPane.ERROR_MESSAGE);
    					}
    					
    					ele=nomeUtente+"&&"+password+"&&";
    				System.out
    							.println(	"intero= "+ele+" nome "+nomeUtente);
    					while (tast.hasNext()) {
    						riga = tast.nextLine();
    						System.out.println("riga: " + riga);
    						if(!riga.equals(null)){
    							dati=riga.split("&&");
    							System.out.println("setta i dati");
    							for (int i = 0; i < dati.length&&chiave!=true; i++) {
    								System.out.println("dati[i]: "+dati[i]);
    								if(dati[i].equals(nomeUtente)){
    									chiave=true;//errore nome esistente
    									  JOptionPane.showMessageDialog(null,"Utente già presente","Error",JOptionPane.ERROR_MESSAGE);
    									System.out.println("chiave true");
    								}else{
    									chiave=false;
    									System.out.println("chiave false");
    								}
    							}
    						}
    					}
    					
    					if(chiave==false){
    						
    						txt.println(ele);
    						LB.setText("AGGIUNTO!");
    					}
    					txt.flush();
    					
    					
    				} catch (IOException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}
    		});
    		btnOk.setBounds(185, 180, 97, 25);
    		contentPane.add(btnOk);
    		
    		JButton btnAnnulla = new JButton("Annulla");
    		btnAnnulla.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				setVisible(false);
    			}
    		});
    		btnAnnulla.setBounds(70, 180, 97, 25);
    		contentPane.add(btnAnnulla);
    		
    	}
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    37
    Nel codice postato non vedo un setVisible(true) sulla dialog .... e comunque la tua dialog non è (non risulta dal codice) "modale" (volevi proprio così?).

    Quindi subito dopo new Accedi() se ci invochi isChiave() ottieni il false inizializzato.


    P.S.
    1) Il contesto e architettura della tua applicazione ovviamente non può essere molto chiaro, solo con il poco codice postato.
    2) Il tuo codice, scusa se lo dico, è parecchio "inguardabile" come stile, struttura.
    quale sarebbe il modo "elegante" per scrivere tutto questo?
    Ultima modifica di iTuring; 16-04-2015 a 21:08

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.