Anzeige:
Ergebnis 1 bis 7 von 7

Thema: Von Klasse auf ein JTextField der GUI-Klasse zugreifen

  1. #1
    Registrierter Benutzer
    Registriert seit
    27.12.2004
    Beiträge
    6

    Von Klasse auf ein JTextField der GUI-Klasse zugreifen

    Hi!

    Hab folgendes Problem:

    Hab eine Gui-Klasse zB gui in der ich

    eingabeFeld = new JTextField(""); und
    ausgabeFeld = new JTextField(""); definiert habe.

    In einer anderen Klasse zB commands werden die Usereingaben vom eingabeFeld weiterverarbeitet.
    Funktioniert alles schön und gut, nur leider kann ich von der Klasse commands nicht den Output auf ausgabeFeld der Gui leiten.
    (derzeit nur mit System.out.println() und damit in der Konsole)

    Sprich; zur Zeit hab ich eine Eingabe-Gui mit der Ausgabe in der Konsole.

    Wie könnte man das am besten lösen?

    Danke und mfg leon22

  2. #2
    Registrierter Benutzer
    Registriert seit
    07.02.2002
    Beiträge
    41
    Hi,

    zunächst sollte die Klasse commands ausgabeText kennen. Das heisst, du musst der Klasse commands mitteilen, wo ausgabeText ist. Ich weiss jetzt natürlich nicht, wie du das aufgebaut hast.
    Am besten postest du mal deinen Code, dann kann man dir besser helfen.

    Gruss
    Sebastian

  3. #3
    Registrierter Benutzer
    Registriert seit
    27.12.2004
    Beiträge
    6
    GUI:

    Code:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class Squize extends JFrame implements ActionListener
    {
    	JTextField eingabeFeld, ausgabeFeld;
    	JButton enterButton;
    	
    	public Squize (String title) 
    	{
    		super (title);	
    		setDefaultCloseOperation(EXIT_ON_CLOSE);
    	    setSize(300,300);
    	    Container cp = getContentPane();
    	    cp.setLayout(new BorderLayout());
    	   
    	    eingabeFeld = new JTextField("");
    	    eingabeFeld.setHorizontalAlignment(SwingConstants.LEFT);
    	    cp.add(eingabeFeld,BorderLayout.NORTH);
    	    
    	    enterButton = new JButton("ENTER");
    	    cp.add(enterButton, BorderLayout.CENTER);
    	    enterButton.addActionListener(this);
    	    
    	    ausgabeFeld = new JTextField();
    	    ausgabeFeld.setHorizontalAlignment(SwingConstants.RIGHT);
    	    ausgabeFeld.setEnabled(false);
    	    cp.add(ausgabeFeld,BorderLayout.SOUTH);
    	    
    	    setVisible(true);
    	}
    		
    	public void actionPerformed(ActionEvent e)
    	{
    		Commandlinehandler commandlinehandler = new Commandlinehandler();
    		commandlinehandler.getCommands(eingabeFeld.getText()); // run the Inputhandler
    	}
    	
    	public static void main(String args[])
    	{
    		new Squize("Squize");
    		
    		
    	}
    }
    Commandlinehandler
    (in der ich gerne auf ausgabeFeld von Squize zugreifen würde)

    Code:
    import java.io.*;
    import java.lang.Math;
    
    class Commandlinehandler 
    {
    	
    	static int square(int n)
    	{
    		return n * n;
    	}
    			
    	public void getCommands(String input_commands)
    	{				
    //		String input_first = input_commands.substring(0,1);
    //		char null_stelle[] = new char[1];
    //		input_commands.getChars(1, 1+1, null_stelle, 0);
    		
    		int commands_length = input_commands.length();
    		char input_commands_char[] = new char[input_commands.length() + 1];
    		input_commands_char = input_commands.toCharArray(); // copy the whole string to a char array
    		
    		if(input_commands_char[0] == (char)10)
    		{
    			System.err.println("error: wrong command, try 'h' for helpi");
    			
    		}
    		else
    		{
    			switch (input_commands_char[0]) 
    			{
    			case 's':
    				if(commands_length != 1 && input_commands_char[1] == ' ')
    				{
    					
    					for(int i=2; i<=commands_length-1; i++)
    					{						
    						if(Character.isDigit(input_commands_char[i]))
    						{
    							if(i == commands_length-1)
    							{
    								int input_number = Integer.parseInt(input_commands.substring(2));
    								System.out.println("The Square of " + input_number + ": " + square(input_number));
    //								Squize.ausgabeFeld.setText("The Square of " + input_number + ": " + square(input_number));
    						
    							}
    						}
    						else
    						{
    							System.err.println("usage: e.g. 's 5' (square a number)");
    						}						
    					}
    				}
    				else
    				{
    					System.err.println("usage: e.g. 's 5' (square a number)");
    				}
    				break;
    			
    			case 'r':
    				if(commands_length != 1 && input_commands_char[1] == ' ')
    				{
    					
    					for(int i=2; i<=commands_length-1; i++)
    					{						
    						if(Character.isDigit(input_commands_char[i]))
    						{
    							if(i == commands_length-1)
    							{
    								int input_number = Integer.parseInt(input_commands.substring(2));
    								System.out.println("The Square Root of " + input_number + ": " + Math.sqrt(input_number));
    							}
    						}
    						else
    						{
    							System.err.println("usage: e.g. 'r 9' (square root a number)");
    						}						
    					}
    				}
    				else
    				{
    					System.err.println("usage: e.g. 'r 9' (square root of a number)");
    				}
    				break;
    				
    			case 'h':
    				System.out.println('\n' + "Help" + '\n' + '\n' + "s ... square a number (e.g. s 5)" + '\n' + "r ... square root a number (e.g. r 9)" 
    						+ '\n' + "q ... quit (exit)" + '\n');
    				break;
    
    			default:
    				System.err.println("error: wrong command, try 'h' for help");
    				break;
    			}		
    		}		
    	}
    }
    Danke im Voraus !!!

    mfg leon22

  4. #4
    Registrierter Benutzer
    Registriert seit
    07.02.2002
    Beiträge
    41
    Also die einfachste Lösung wäre, der Methode getCommands einfach einen Rückgabewert zu verpassen. Dann kannst du den String, den du per System.out.println() an die Konsole schickst, als String zurückgeben und dann in der GUI einfach dem TextFeld zuweisen.

    Code:
    public void actionPerformed(ActionEvent e)
    	{
    		Commandlinehandler commandlinehandler = new Commandlinehandler();
    		ausgabeFeld.setText(commandlinehandler.getCommands(eingabeFeld.getText  ())); // run the Inputhandler
    	}
    Ansonsten könntest du der Methode auch eine Referenz auf das Textfeld übergeben.

    EDIT: Die Rechtschreibung

  5. #5
    Registrierter Benutzer
    Registriert seit
    27.12.2004
    Beiträge
    6
    Erstmals danke!

    Wie würde da die Syntax ausschauen wenn ich eine Referenz auf das TextFeld übergeben will?!
    Sind halt die typischen Anfängerfragen ;-)

    Danke

    mfg leon22

  6. #6
    Registrierter Benutzer
    Registriert seit
    07.02.2002
    Beiträge
    41
    Der Methodenkopf müsste dann wie folgt aussehen:

    Code:
    public void getCommands(String input_commands, JTextField textfeld) {
    
    ...
    
    }
    Und irgendwo in der Methode kannst du dann einfach mit textfeld.setText(...) den Inhalt des Textfeldes setzen.

  7. #7
    Registrierter Benutzer
    Registriert seit
    27.12.2004
    Beiträge
    6
    Danke, alles klar!

    mfg leon22

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •