auf button klick befehl ausführen

Status
Nicht offen für weitere Antworten.
R

RaZ0oor

Gast
Hi, ich stehe wieder mal vor einem Problem.
Bis jetzt habe ich gelernt, dass wenn ich auf einen Button klicke, dass ich die Button schrift verändern kann. Wie kann ich machen, dass wenn ich einen Button klicke, etwas ausgeführt, dass einen Text erscheinen lässt. Ich hatte das schon versucht, aber der Text erschien nur, wenn ich die Fenster größe geändert habe.

Ich habe mal men Problem mit kommentaren versehen, was nicht klappt. Wäre cool wenn mir jemand helfen könnte


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

public class Alk extends JFrame {
	JButton mann, frau;
	JTextField getränk, mänge, gewicht, größe, alter;
	JLabel t_getränk,  t_mänge, t_gewicht, t_größe, t_alter, t_alterr, t_leer;
	String funktion;
		
	public static void main(String[] args) {
		Alk fenster = new Alk("Alkoholrechner - Watsonformel");
		fenster.pack();
		fenster.setSize(450,450);
		fenster.setVisible(true);
	}
	
		
	Alk(String titel) {
		super(titel);
			
	
		JPanel panel = new JPanel();
		panel.setLayout(new GridLayout(9,2,10,10));
		
			
			t_getränk = new JLabel("Alkoholwert in %");
			t_mänge = new JLabel("Mänge des Alkhohols in ml");
			t_gewicht = new JLabel("Gewicht in KG");
			t_alter = new JLabel("Dein Alter");
			t_leer = new JLabel("");
			mann = new JButton("mann");
			frau = new JButton("frau");
			getränk = new JTextField();
			mänge = new JTextField();
			gewicht = new JTextField();
			größe = new JTextField();
			alter = new JTextField();
			
			
						
			panel.add(t_getränk);
			panel.add(getränk);
			panel.add(t_mänge);
			panel.add(mänge);
			panel.add(t_gewicht);
			panel.add(gewicht);
			panel.add(t_alter);
			panel.add(alter);
			panel.add(frau);
			panel.add(mann);
			add(panel);
			
			
			setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
			
			mann.addActionListener(new CMeinActionLauscher());	
			frau.addActionListener(new CMeinActionLauscher());
	}		
	
	
	class CMeinActionLauscher implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			String label;
			label = e.getActionCommand();
			
			if(label.equals("mann")) {
				funktion = "mann";
				//HiER SOLL JETZT ETWAS AUFGERUFEN WERDEN, DASS EIN TEXT ERSCHEINT, ICH BIN EIN MANN
			}
						
			if(label.equals("frau")) {
				funktion = "frau";
//				HiER SOLL JETZT ETWAS AUFGERUFEN WERDEN, DASS EIN TEXT ERSCHEINT, ICH BIN EINE FRAU
			}
							
		}
			
	
	}
	
}

lg RaZ0oR
 

heart_disease

Bekanntes Mitglied
Bist du sicher dass
Code:
e.getActionCommand();
hier der richtige Weg ist? Und wo ist überhaupt der Codepart für die Textausgabe? Oder ich hab die Frage falsch verstanden ...
 

RaZ0oR

Mitglied
heart_disease hat gesagt.:
Bist du sicher dass
Code:
e.getActionCommand();
hier der richtige Weg ist? Und wo ist überhaupt der Codepart für die Textausgabe? Oder ich hab die Frage falsch verstanden ...
Nein bin ich nicht, ich bin ziemlich neu bei Java und in meinem Buch ham die das irgendwann mal benutzt um etwas zu vergleichen. Ich hab den Falschen Code reinkopiert, die Textausgabe ist nicht dabei und in meinen gespeichertn habe ich die Textausgaben auch nicht mehr :-(.
Könnt ihr mir vielleciht helfen, denn Code so abzuändern, dass wenn ich auf einen button klicke, die Textausgabe kommt?
 
G

Guest

Gast
Mal ein Ansatz von mir:

Code:
class CMeinActionLauscher implements ActionListener {
private String id;

      public CMeinActionLauscher( String id ) {
this.id = id;
}

public void actionPerformed(ActionEvent e) {
        if(this.id.equals("mann")) {
            t_leer.setText( "Ich bin ein Mann" );
         }
                  
         if(this.id.equals("frau")) {
           t_leer.setText( "Ich bin eine Frau" );
         }
                     
      }
   }

Aufgerufen sollte das dann so werden:
Code:
mann.addActionListener( new CMeinActionLauscher("mann") );
frau.addActionListener( new CMeinActionLauscher("frau") );

So wirklich sauber ist allerdings auch diese Lösung nicht, aber für den Anfang reichts ja ;)
 

RaZ0oR

Mitglied
Anonymous hat gesagt.:
Mal ein Ansatz von mir:

Code:
class CMeinActionLauscher implements ActionListener {
private String id;

      public CMeinActionLauscher( String id ) {
this.id = id;
}

public void actionPerformed(ActionEvent e) {
        if(this.id.equals("mann")) {
            t_leer.setText( "Ich bin ein Mann" );
         }
                  
         if(this.id.equals("frau")) {
           t_leer.setText( "Ich bin eine Frau" );
         }
                     
      }
   }

Aufgerufen sollte das dann so werden:
Code:
mann.addActionListener( new CMeinActionLauscher("mann") );
frau.addActionListener( new CMeinActionLauscher("frau") );

So wirklich sauber ist allerdings auch diese Lösung nicht, aber für den Anfang reichts ja ;)

Ok, dankeschön.
das einzigste was ich nicht verstehe ist dieses "this". Wie gesagt ich bin neu in Java. Könnte mir einer erklären was das "this" bewirkt?

EDIT: OK kapiert

Edit2: MEin fehler, später muss statt ich bin ein mann/frau der wert von einer Rechnung hin, z.B: 5+5 muss statt dem satz hin
wie kann ihc den das verwirklichen?

Edit3:
Ich beschreibe mein Problem mal genauer, wenn man auf den button mann klickt, soll eine Formel ausgerechnet werden und im Programm erscheinen, das selbe auch bei frau, nur mit einer andren Formel. Nur ich verstehe nicht ganz wie ich das ganze dazu bringe, dass das am ende auch im Programm erscheint
 

Escorter

Bekanntes Mitglied
Code:
    	JButton mann = new JButton("Mann");
    	mann.setActionCommand("test");
    	System.out.println("AC 1: " + mann.getActionCommand());
    	mann.setText("Frau");
    	System.out.println("AC 2: " + mann.getActionCommand());

So wie ich das verstanden habe ändert sich nur der Text des Buttons. Bei Buttons ist es so, dass wenn nicht explizit eine ActionCommand gesetzt wurde der TExt der ActionCommand ist. Änderst du aber den ActionCommand, dann bleibt dieser auch nach der Textänderung aktiv. Mit dem Codeschnipsel oben hab ichs getestet und der ActionCommand war beidesmal "test".

Ist das, das wo nach du gesucht hast?

Gruß,
Esco
 

heart_disease

Bekanntes Mitglied
Kleine Anmerkung: Umlaute und Sonderzeichen wie 'ß' sind beim Programmieren eine Todsünde!

EDIT: So, das hier wäre einigermaßen sauber gelöst. Diese Watsonformel musst du selbst noch implementieren, die kenne ich nicht. Für diese Angelegenheit gibts jetzt die Methode public void detectConclusion( boolean male ).
(Wenn du den Code so übernimmst, musst du unbedingt den Dateinamen auf AlkTest.java ändern!)

Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
	
public class AlkTest extends JFrame {
	private JButton mann, frau;
	private JTextField getraenk, maenge, gewicht, groesse, alter;
	private JLabel t_getraenk,  t_maenge, t_gewicht, t_groesse, t_alter, t_alterr, t_leer;
	private String funktion;
		
	public static void main(String[] args) {
		// Init System Look&Feel
		try {
			UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName() );
		} catch ( Exception e ) {
			System.err.println( "Can't set Look&Feel!" );
		}
		
		AlkTest fenster = new AlkTest( "Alkoholrechner - Watsonformel" );
		fenster.init();
	}
	
	public AlkTest( String titel ) {
		super( titel );
		
		this.setLayout( new GridLayout(9, 2, 10, 10) );
		
		this.t_getraenk = new JLabel("Alkoholwert in %");
		this.t_maenge = new JLabel("Maenge des Alkhohols in ml");
		this.t_gewicht = new JLabel("Gewicht in KG");
		this.t_alter = new JLabel("Dein Alter");
		this.t_leer = new JLabel("");
		this.mann = new JButton("mann");
		this.frau = new JButton("frau");
		this.getraenk = new JTextField();
		this.maenge = new JTextField();
		this.gewicht = new JTextField();
		this.groesse = new JTextField();
		this.alter = new JTextField();
			
		this.mann.addActionListener( new CMeinActionLauscher(true) );	
		this.frau.addActionListener( new CMeinActionLauscher(false) );
		
		this.getContentPane().add(t_getraenk);
		this.getContentPane().add(getraenk);
		this.getContentPane().add(t_maenge);
		this.getContentPane().add(maenge);
		this.getContentPane().add(t_gewicht);
		this.getContentPane().add(gewicht);
		this.getContentPane().add(t_alter);
		this.getContentPane().add(alter);
		this.getContentPane().add(frau);
		this.getContentPane().add(mann);
	}
	
	public void init() {
		//this.pack();
		this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		this.setSize( 450, 450 );
		this.setVisible( true );
	}
	
	/**
	 * In dieser Methode wird das Ergebnis rechnerisch ermittelt und
	 * ausgeben (zB ueber JOptionPane). Um mit den eingegeben Werten
	 * aus den Textfeldern rechnen zu koennen, muessen die Werte erst mit
	 * Double.parseDouble(String s) bzw. Integer.parseInt(String s) konvertiert werden.
	*/
	public void detectConclusion( boolean male ) {
		String ergebnis = ( male ) ? "Sie sind ein Mann" : "Sie sind eine Frau";
		
		JOptionPane.showMessageDialog( null, ergebnis, "Ergebnis", JOptionPane.INFORMATION_MESSAGE );
	}
	
	private class CMeinActionLauscher implements ActionListener {
		private boolean isMale;
		
		public CMeinActionLauscher( boolean male ) {
			this.isMale = male;
		}
		
		public void actionPerformed( ActionEvent e ) {
			detectConclusion( this.isMale );
		}
	
	}
}
 

heart_disease

Bekanntes Mitglied
Natürlich geht's, aber der Compiler meckert bei solchen Zeichen. Und ein Amerikaner wird zB keine allzu große Freude an Quelltexten mit Umlauten haben ;)
Außerdem kommt's immer wieder zu Troubles mit der Zeichencodierung (UTF-8 vs. ISO-Normen)
 

Leroy42

Top Contributor
heart_disease hat gesagt.:
Natürlich geht's, aber der Compiler meckert bei solchen Zeichen.

:shock: Unsinn! Der Compiler verarbeitet Unicode-Zeichen!

Höchstens das Betriebssystem macht Schwierigkeiten bei Verwendung von
Umlauten in Klassen- und Interface-Namen.

heart_disease hat gesagt.:
Und ein Amerikaner wird zB keine allzu große Freude an Quelltexten mit Umlauten haben ;)

Was ist das denn für ein Grund? Ein Ägypter oder Chinese könnte auch
Schwierigkeiten mit lateinischen Buchstaben haben und dennoch entwickeln
die auch Software.
 
S

SlaterB

Gast
> Was ist das denn für ein Grund?

Standardisierung ist ein wichtiges Konzept, Programmierer aus 20 Längern kommen mit 18 der 20 Sprachen nicht zurecht,
nur mit ihrer eigenen und englisch,

klar mag nicht jeder englisch ganz leicht verstehen,
aber wieso ist das jetzt ein Grund dafür, dass deutsche Umlaute ok sind?
damit wird ein Chinese noch weniger klar kommen und allen anderen auch nicht und ein heilloses Durcheinander entsteht
 

Leroy42

Top Contributor
Ich vermeide auch deutsche Umlaute, sogar in Variablennamen
obwohl dies unnötig ist.

Aber eben aus Gründen der Standardisierung und nicht
weil der Compiler meckert oder ein Amerikaner damit
Schwierigkeiten hätte.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Spiel mit Button klick starten Java Basics - Anfänger-Themen 9
J Button klick bei eine bestimmten Zahl Java Basics - Anfänger-Themen 8
P Auf Button-Klick außerhalb der GUI-Klasse reagieren Java Basics - Anfänger-Themen 10
D Durch Button klick wert in JTextField einfügen Java Basics - Anfänger-Themen 5
J Klick auf Button -> JFrame öffnet sich erneut. & Datei lässt sich nicht löschen Java Basics - Anfänger-Themen 7
thorr Ereignis bei Klick auf Button Java Basics - Anfänger-Themen 3
C Button einfärben bei Klick Java Basics - Anfänger-Themen 5
T Per Button Klick Fenster schließen?< Java Basics - Anfänger-Themen 7
B klick auf einen Button zählen Java Basics - Anfänger-Themen 3
G zelle(n) makieren, button klick, Zelle(n) farbig Java Basics - Anfänger-Themen 4
M JTable - DefaultTableModel - neue Row per Button-Klick Java Basics - Anfänger-Themen 2
M jToggleButton Klick abfangen ohne den Button zu deaktivieren Java Basics - Anfänger-Themen 2
P Button deaktivieren bei Klick auf einen anderen Button? Java Basics - Anfänger-Themen 5
L Button-Klick Java Basics - Anfänger-Themen 9
T Klick auf Button Java Basics - Anfänger-Themen 7
G Fenster schließen bei Klick auf Button Java Basics - Anfänger-Themen 4
R NullPointerException beim Klick auf Button Java Basics - Anfänger-Themen 3
M Help! ActionEvent bei Button Klick Java Basics - Anfänger-Themen 9
F JDialog per Button-Klick schliessen Java Basics - Anfänger-Themen 2
L Bei Klick auf einen Button reagieren - Wahrer Anfänger! Java Basics - Anfänger-Themen 3
N Nach Button klick zeichnen Java Basics - Anfänger-Themen 6
Rookar Mit Button andere java öffnen Java Basics - Anfänger-Themen 4
Maxq Klassen Actionen in Button implementieren Java Basics - Anfänger-Themen 6
B Wie kann ich folgende Klasse/Methode per Button ausführen? Java Basics - Anfänger-Themen 1
JavaBeginner22 Button Text verändern Java Basics - Anfänger-Themen 1
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
Schniffi Nur bestimmte Bilder aus einem Array auf Image Button anzeigen lassen Java Basics - Anfänger-Themen 3
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
B Zurück Button erstellen Java Basics - Anfänger-Themen 1
Tom/S Button info Java Basics - Anfänger-Themen 2
I Exception bei Button mit wait() und notifyAll() Java Basics - Anfänger-Themen 3
T JSP, Button-Color change. Java Basics - Anfänger-Themen 1
L hilfe run button funktioniert nicht Java Basics - Anfänger-Themen 13
S Erste Schritte Button einen Wert zuweisen & diesen ausgeben Java Basics - Anfänger-Themen 2
S Counter Label Button Java Basics - Anfänger-Themen 4
J Button über Pfeiltasten bewegen Java Basics - Anfänger-Themen 8
J Button als Feld nutzen Java Basics - Anfänger-Themen 17
A JOPtionPaneOptionDialog Abfrage welcher Button gedrückt wurde? Java Basics - Anfänger-Themen 8
J JavaFX Label,Button zur Laufzeit Java Basics - Anfänger-Themen 30
B Button soll sowohl auf Klicken als auch auf die Enter-Taste reagieren Java Basics - Anfänger-Themen 9
S Klassenaufruf über JFrame Button Java Basics - Anfänger-Themen 3
G JTextField per Button speichern und an andere Klasse übergeben Java Basics - Anfänger-Themen 2
X TextField-Inhalt mit Button in .txt-Datei speichern Java Basics - Anfänger-Themen 16
S JFrame mit Hintergrundbild und Button Java Basics - Anfänger-Themen 4
P Upload Button funktioniert nicht Java Basics - Anfänger-Themen 13
I Ordnung JLayeredPane mit Button ändern Java Basics - Anfänger-Themen 5
A JLabel mit button drücken verändern Java Basics - Anfänger-Themen 6
H Swing Button hat falsche Größe Java Basics - Anfänger-Themen 5
CptK mit javafx button erstellen Java Basics - Anfänger-Themen 1
AppGuruCode962 Button mit Textfield verbinden Java Basics - Anfänger-Themen 13
L Java gui reset button Fehler!? Java Basics - Anfänger-Themen 2
L Java reset button Problem Java Basics - Anfänger-Themen 3
L Java reset button Problem Java Basics - Anfänger-Themen 9
L Erste Schritte AndroidStudio Button - Nur Großbuchstaben Java Basics - Anfänger-Themen 2
V JAVA Button Java Basics - Anfänger-Themen 4
M Listener für Button - Wert von Variablen verändern Java Basics - Anfänger-Themen 14
S OOP Button erst nach 2x klicken deaktivieren Java Basics - Anfänger-Themen 4
J Button in anderer Klasse ändern Java Basics - Anfänger-Themen 3
A Fenster mit Button aufrufen Java Basics - Anfänger-Themen 3
V Button/Event wird nicht ausgeführt, was tun? Java Basics - Anfänger-Themen 2
J Bild in Button einsetzen Java Basics - Anfänger-Themen 6
S button kommt durch bild Java Basics - Anfänger-Themen 13
I GUI Button Postition festlegen Java Basics - Anfänger-Themen 4
Tacofan Welcher Button wurde zuerst gedrückt? Java Basics - Anfänger-Themen 4
K Interface Fenster mit 3 ComboBoxen und 1 Button Java Basics - Anfänger-Themen 13
J Best Practice Button isPressed o.ä. auswerten Java Basics - Anfänger-Themen 10
S zahl hoch und runter zählen per button Java Basics - Anfänger-Themen 25
G Email-sending Button Java Basics - Anfänger-Themen 9
K Input/Output JCheckBox mit Bestätigungs-Button Java Basics - Anfänger-Themen 22
A Nach Druck eines Buttons reagieren andere Button nicht Java Basics - Anfänger-Themen 3
C Ein Button soll Focus rausfinden und Methode starten Java Basics - Anfänger-Themen 9
S mit Java HTML Button drücken "lassen" Java Basics - Anfänger-Themen 8
GadgetSofa jComboBox mit dem Button verbinden. Aber wie?? Java Basics - Anfänger-Themen 4
R Button soll Wert 1 in Variable schreiben Java Basics - Anfänger-Themen 4
D Zurück Button -- Background wird nicht angezeigt Java Basics - Anfänger-Themen 4
S Button "Berechnen" geht nicht Java Basics - Anfänger-Themen 3
H Text in einen Button quetschen Java Basics - Anfänger-Themen 3
S Input/Output In Java Swing auf Button warten? Java Basics - Anfänger-Themen 9
B Home Button ausbleden ? Java Basics - Anfänger-Themen 8
M JMenuItem per Button hinzufügen Java Basics - Anfänger-Themen 2
T Eclipse kennt mein Button nicht... Java Basics - Anfänger-Themen 5
Chava Testprojekt.Text.Image.Button Java Basics - Anfänger-Themen 4
G Button Event Java Basics - Anfänger-Themen 6
S Methode pausieren bis Button gedrückt wird Java Basics - Anfänger-Themen 5
K Button's mit versch. Aufgaben/ActionListener Java Basics - Anfänger-Themen 12
J Button erstellen mit for-Schleife Java Basics - Anfänger-Themen 10
llabusch Fenster per Button verschieben Java Basics - Anfänger-Themen 5
J Button wird nicht angezeigt (GUI) Java Basics - Anfänger-Themen 7
I Button abfragen ob er geklickt wurde Java Basics - Anfänger-Themen 4
S Eigenen Listener zu eigenen Button! Java Basics - Anfänger-Themen 5
P Aktion ausführen wenn Button geklickt wird Java Basics - Anfänger-Themen 7
M Button mit Bild und Text Java Basics - Anfänger-Themen 2
N Mehrere berechnungen auf einem Button legen? Java Basics - Anfänger-Themen 19
T aktivieren und deaktivieren von Radio Button Java Basics - Anfänger-Themen 2
K Compiler-Fehler Button cannot be resolved or is not a field Java Basics - Anfänger-Themen 6
G Button Prototyp erstellen Java Basics - Anfänger-Themen 5
A Erkennung eines Button im aktiven Fenster Java Basics - Anfänger-Themen 2
P JTabel größe ändern und button anzeigen Java Basics - Anfänger-Themen 5
T Button Text mit Action Listener [Hilfe!] Java Basics - Anfänger-Themen 10
V Robot kann Button nicht drücken warum? Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben