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

    [Java] Problema JTextField

    Salve ragazzi, ho un piccolo problema, con un'applicazione grafica. Ho un frame con una casella di testo ed un bottone, ogni volta che premo il bottone, voglio far comparire un messaggio contenente quello che era scritto nella casella di testo. Il problema è che la casella di testo è in una classe diversa da quella dov'è l'azione del pulsante, ho provato a far ereditare la classe ButtonPanel da quella azione, per così poter usare la variabile JTextField, ma viene segnalato Exception in thread "main" java.lang.StackOverflowError. Comunque ora posto il codice nella speranza che qualcuno possa aiutarmi, grazie a chi lo farà

    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
    
    public class testo
    {
    	public static void main(String[] args)
    	{
    			ButtonFrame frame = new ButtonFrame();
    			frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    			frame.show();
    	}
    
    }
    
    class ButtonFrame extends JFrame
    {
    	public ButtonFrame()
    	{
    		setTitle("Applicazione");
    		setSize(400,400);
    
    		ButtonPanel panel = new ButtonPanel();
    		Container contentPane=getContentPane();
    		contentPane.add(panel);
    	}
    }
    
    class ButtonPanel extends JPanel
    {
    	public ButtonPanel()
    	{
    		JButton insert = new JButton("Inserisci");
    		JTextField casella = new JTextField(10);
    		JLabel label = new JLabel("Inserire Testo");
    		add(label);
    		add(casella);
    		add(insert);
    
    		Azione a = new Azione();
    		insert.addActionListener(a);
    	}
    }
    
    class Azione implements ActionListener
    {
    	public void actionPerformed(ActionEvent event)
    	{
    		String command= event.getActionCommand();
    		String s="";
    
    		if(command.equals("Inserisci"))
    		{
    			s = casella.getText();
    			JOptionPane.showMessageDialog(null,"Casella testo : " +s);
    		}
    	}
    }

  2. #2
    perchè non provi così:
    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
    
    public class testo
    {
    	public static void main(String[] args)
    	{
    			ButtonFrame frame = new ButtonFrame();
    			frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    			frame.show();
    	}
    
    }
    
    class ButtonFrame extends JFrame
    {
    	public ButtonFrame()
    	{
    		setTitle("Applicazione");
    		setSize(400,400);
    
    		ButtonPanel panel = new ButtonPanel();
    		Container contentPane=getContentPane();
    		contentPane.add(panel);
    	}
    }
    
    class ButtonPanel extends JPanel
    {
    	public ButtonPanel()
    	{
    		JButton insert = new JButton("Inserisci");
    		JTextField casella = new JTextField(10);
    		JLabel label = new JLabel("Inserire Testo");
    		add(label);
    		add(casella);
    		add(insert);
    
    		AzioneSuJTextField a = new AzioneSuJTextField(casella);
    		insert.addActionListener(a);
    	}
    }
    
    class AzioneSuJTextField implements ActionListener
    {
    	private JTextField textField = null;
    
    	public Azione(JTextField aTextField) {
    		textField = aTextField;
    	}
    
    	public void actionPerformed(ActionEvent event)
    	{
    		String command= event.getActionCommand();
    		String s="";
    
    		if(command.equals("Inserisci"))
    		{
    			s = textField.getText();
    			JOptionPane.showMessageDialog(null,"Casella testo : " +s);
    		}
    	}
    }
    Ho responsabilizzato la tua Azione, rinominandola AzioneSuJTextField, in modo che lavori su un JTextField (sarebbe più giusto farlo su javax.swing.text.JTextComponent).
    AzioneSuJTextField ora si aspetta il passaggio per riferimento di un JTextField su cui operare: adesso mostra un messaggio, domani potrebbe fare controlli complessi sul contenuto o anche modificarlo.

    Sta a te adesso!

    Buona serata.

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.