Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [Java] JDialog con valore di ritorno String

    Ciao ragazzi,
    ho creato una JDialog con un campo JTextField e i JButton OK e Annulla. Vorrei che una volta che premo "ok" la JDialog mi dia come valore di ritorno String, il valore del campo JTextField mentre se premo "annulla" mi deve ritornare la String "CANCEL".
    Come è possibile fare?
    Non si possono usare sempre le finestre di JOptionPane!!!
    questo è il codice provvisorio
    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class finestra extends JDialog implements ActionListener {
    	JDialog finestra = new JDialog();
    	
    	private void creaJDialog() {
    	finestra.setBounds(180,250,1000,300);
    	finestra.setTitle("Comando SQL");
    	ok = new JButton("OK");
    	ok.addActionListener(this);
    	cancel = new JButton("ANNULLA");
    	cancel.addActionListener(this);
    	JPanel p = new JPanel();
    	
    	p.setLayout(new BorderLayout());
    	
    	JLabel testo = new JLabel("Inserisci il comando:");
    	testo.setFont(new Font("Times",Font.BOLD,13));
    	p.add("North", testo);
    	JPanel p1 = new JPanel();
    	comando = new JTextField(80);
    	comando.setFont(new Font("Times", Font.BOLD,14));
    	p1.add(comando);
    	p.add("Center",p1);
    	
    	JPanel p2 = new JPanel();
    	p2.setLayout(new FlowLayout());
    	p2.add(ok);
    	p2.add(cancel);
    	
    	p.add("South",p2);
    	finestra.add(p);
    	finestra.setVisible(true);
    	
    	}
    	public void actionPerformed(ActionEvent ae) {
    		if (ae.getSource() == ok) 
    			estraiComando();
    	 		finestra.dispose();
    		if (ae.getSource() == cancel)
    			annulla();
    	 		finestra.dispose();
    	
    	}
    	private String estraiComando() {
    		String cmd = comando.getText();  
    		if (cmd.equals(""))
    			cmd = "CANCEL";
    		return cmd;
    			
    	}
    	private String annulla() {
    		return "CANCEL";
    	}
    	
    	private JButton ok,cancel;
    			JTextField comando;
    			
    
    public static void main(String[] arg) {
    	finestra f = new finestra();
    	f.creaJDialog();
    	
    }
    }
    grazie per l'aiuto.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    JOptionPane ti ritorna il valore perché in automatico viene creata per te la finestrella partendo dalle impostazioni che tu hai.
    Se tu parti da una JDialog, il valore di ritorno devi gestirlo tu. Puoi passare una istanza di qualsiasi oggetto che valorizzi DENTRO il tuo dialog, in modo da averla disponibile dopo il dispose.

    ps non è che gestisci l'input male? avere bisogno di tante JOptionPane o di tante JDialog non è il massimo della progettazione
    RTFM Read That F*** Manual!!!

  3. #3
    dicevo di utilizzare JOptionPane perchè sono un neofita e non ho ancora mai utilizzato le JDialog personalizzate per facilità ma volevo imparare.

    Come faccio a gestire il valore di ritorno al momento di premere il pulsante?
    Conosci qualche guida online che spiega le JDialog oltre all'api?
    grazie

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.