Ausgabe nach Klick auf JButton funktioniert nicht.

Status
Nicht offen für weitere Antworten.

mila

Neues Mitglied
Hallo!

Habe neuerdings angefangen mich mit GUI/Swing zu beschäftigen.
Bin also in dem Sinne noch blutiger Anfänger und es ist durchaus möglich,
dass in meinem Code auch (grobe) Fehler auftreten...

Das Problem, das ich im Moment habe, ist, dass wenn ich auf einen Button klicke, soll eine Ausgabe geschehen...
Habe über verschiedene Wege versucht das zu realisieren,
aber es klappt irgendwie überhaupt nicht.

Ich bin (vermutlich) auch noch nicht ganz durch diese Swing-Geschichte durchgestiegen...

Also, wie kann ich es realisieren, dass, wenn ich auf 'pruefe' klicke, er mir eine Textzeile "Die Zahl stimmt/stimmt nicht" ausgibt?
Oder muss ich da ganz anders rangehen?

Über Ideen (oder notfalls auch Neuansätze) wäre ich sehr dankbar!

Gruß,
mila 🙂

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

public class SwingPruefung extends JApplet implements ActionListener{

	private JButton pruefe;
	private JTextField eingabefeld;
	private String eingabe;
	private boolean entscheidung;
	private char[] z;

	public void init(){

	        Container c = getContentPane();
	        JPanel panel = new JPanel();
		
                c.setLayout(new FlowLayout());
		
		eingabefeld = new JTextField(15);
		eingabefeld.setText("Bitte Zahl eingeben!");
		panel.add(eingabefeld);
		eingabefeld.addActionListener(this);

		pruefe = new JButton("Prüfe!");
		panel.add(pruefe);
		pruefe.addActionListener(this);
		
		c.add(panel, BorderLayout.CENTER);
					
	}

	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == pruefe){
			eingabe = eingabefeld.getText();
			entscheidung = ueberpruefe(eingabe);
		}
	}
	
	private boolean ueberpruefe(String eingabe){ 
            //prüft, ob eine eingegebene Zahl eine Dezimalzahl ist und gibt entsprechend true/false zurück
	}
		
}
 
So wie ich das sehe, funktioniert dein ActionListener. Kannst ja mal in actionPerformed(ActionEvent e) ein System.out.println("funktioniert"); rein machen und auf der Konsole nachsehen ob beim Klick auf den Knopf was ausgegeben wird.
 
Der Actionlistener funktioniert eigentlich schon, ABER deine "ueberprüfen" Funktion macht nichts und gibts auch nichts zurück (Gibt ein Kompilierfehler). Was willst du genau machen wenn man auf den Button drückt?

Edit: Ah der Kommentar in der Überprüfen Funktion sagt mehr =)

So etwa würde das funktionieren (nicht für Fließkommazahlen)

Code:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class SwingPruefung extends JApplet implements ActionListener {

	private JButton pruefe;

	private JTextField eingabefeld;

	private String eingabe;

	private char[] z;

	public void init() {

		Container c = getContentPane();
		JPanel panel = new JPanel();

		c.setLayout(new FlowLayout());

		eingabefeld = new JTextField(15);
		eingabefeld.setText("Bitte Zahl eingeben!");
		panel.add(eingabefeld);
		eingabefeld.addActionListener(this);

		pruefe = new JButton("Prüfe!");
		panel.add(pruefe);
		pruefe.addActionListener(this);

		c.add(panel, BorderLayout.CENTER);

	}

	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == pruefe) {
			System.out.println(ueberpruefe(eingabefeld.getText()));
		}
	}

	private boolean ueberpruefe(String eingabe) {

		for (int i = 0; i < eingabe.length(); ++i) {
			if (!Character.isDigit(eingabe.charAt(i)))
				return false;
		}

		return true;
	}
}
 
Wenn jemand (ohne Anführungszeichen)
" 123"
oder
"-123"
oder sogar
"1.23"
oder
"-.3e3d"
eingibt, haut's das raus. (Nur nebenbei erwähnt)
 
Marco13 hat gesagt.:
oder sogar
"1.23"

Habe ich erwähnt.
Negative Zahlen wollte ich auch gleich noch erwähnen. An die anderen Sachen, oder auch z.B. hexadezimale Zahlen habe ich nicht gedacht.

War eigentlich nur mal so ein Ansatz. Aber am einfachsten wärs wohl mit Regex...
 
Hey...

danke erstmal...

das Problem liegt bei mir nicht in der ueberpruefe, sondern darin,
dass ich, wenn ich 'pruefe' klicke, checkt er, ob die Zahl ne Dezimalzahl is oder nich,
aber das würd ich gern als Text auf dem Bildschirm haben...
(nicht in der Konsole, wie es ja System.out.println() macht.)
da hakt's bei mir...
und ich hab keine Ahnung, wie ich das realisieren soll... -.-

Gruß,
mila
 
Wenn du in der Gui Text anzeigen willst musst du auch einen entsprechenden Container zur Verfügung haben, also entweder ein Textfeld, Textarea, Label, Button etc. all das kannst du dann "Beschriften" mit setText(DeinText), aber im einfachsten Fall kannst du auch ne MessageBox ausgeben, also
JOptionPane.showMessageDialog(this, ueberpruefe(eingabefeld.getText())).

Gruß

DarkLoG
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben