Textfeld aktiv beim starten des Programms

  • Themenstarter Themenstarter 1993kcal
  • Beginndatum Beginndatum
1

1993kcal

Gast
Tag Leute, ich suche einen relativ simplen befehl, habe allerdings nichts in google ect. gefunden.

Wenn ich mein Programm ausführe hätte ich gerne dass ich direkt, ohne in das Textfeld klicken zu drücken müssen, eine Zahl eingeben kann. Sprich, der Blinkende Coursor (oder so^^) sollte direkt in dem Textfeld sein.

Dann bräuchte ich noch einen befehl dass der eine button ebenfalls "aktiviert" ist, sprich, wenn ich Enter drücke, ich automatisch den Button betätige.


Hoffe ihr könnt mir helfen 🙂


MFG 1993-kcal
 
wohin soll ich das schreiben? ich habe im moment nur eine .java datei in der alles steht, das soll später auch noch besser werden (weiß nur nicht genau wie das geht, haben das zwar letztens in der Schule gemacht, allerdings nur mit getter und setter). Ich glaube du willst dass ich das public void setDefaultButton(JButton defaultButton) in diese 2. java datei schreiben soll, oder?

atm sieht das ganze so aus:
Java:
	JButton b = new JButton("Berechnen");
		add (b);
		b.setBounds(250, 50, 100,20);
		b.addActionListener(this);
                ......
                ......
		eingabe=new JTextField("");
		add (eingabe);
		eingabe.setEditable(true);
		eingabe.setBounds(140, 20, 100, 20);

und eben, wie gesagt, ich hätte gerne dass ich, wenn ich das programm ausführe, eifnach drauf los schreiben kann und enter drückcken kann und am schluss das ergebniss erscheint. Geht das nicht einfach mit einem befehl wie b.set***?

Danke schonmal
 
Naja - ich will gar nicht, dass Du irgendwas irgendwohin schreibst. Du willst das. ;-) Poste doch einfach mal das ganze Programm. Das einfachste in Sachen Fokus ist, die Komponenten in der Reihenfolge auf den Container zu tun in der auch der Fokus abgearbeitet werden soll; Dein Textfeld also zuerst.

Das setDefaultButton muss in die Nähe des JFrames/JDialogs (das/den Du sicher irgendwo aufbaust).

Ebenius
 
ok, hier mal das komplette programm:

Java:
package Kopierkosten;

import java.awt.*;
import java.awt.event.*;
import java.text.DecimalFormat;

import javax.swing.*;


public class Ausführen extends JFrame implements ActionListener 
{
	private static final long serialVersionUID = 1L;
	private String efeld; //eingabefeld
	private String afeld; //ausgabefeld
	
	private JTextField eingabe, infos, ausgabe;

	public Ausführen()
	{
		setTitle("Kopierkosten");
		getContentPane().setBackground(Color.LIGHT_GRAY);
		this.setLayout(null);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		infos=new JTextField("Kopien");
		add (infos);
		infos.setEditable(false);
		infos.setBounds(20, 20, 100, 20);
		
		infos=new JTextField("Preis in Euro");
		add (infos);
		infos.setEditable(false);
		infos.setBounds(20, 50, 100, 20);
		
		eingabe=new JTextField("");
		add (eingabe);
		eingabe.setEditable(true);
		eingabe.setBounds(140, 20, 100, 20);
		
		ausgabe=new JTextField("0,00 €");
		add (ausgabe);
		ausgabe.setEditable(false);
		ausgabe.setBounds(140, 50, 100, 20);
		
		JButton b = new JButton("Berechnen");
		add (b);
		b.setBounds(250, 50, 100,20);
		b.addActionListener(this);
	}
	
	public static void main(String[] args) 
	{
		Ausführen hauptfenster = new Ausführen();
		
		hauptfenster.setSize (400, 200);
		hauptfenster.setLocation(500, 200);
		hauptfenster.setVisible(true);
	}
	
	public void actionPerformed(ActionEvent e) 
	{
		Programm a = new Programm();
		efeld=eingabe.getText();
		a.setKopien(Long.valueOf(efeld).longValue());
		a.setRechnunge(0);
		a.setRechnungm(a.getKopien());
		
		a.rechnung();
		
		DecimalFormat df = new DecimalFormat("0.00");
		ausgabe.setText(df.format(a.getRechnunge())+" €");
	}

}



Das Programm ist eine übung aus der Schule, es soll den Preis in € bei X Kopien angeben, wobei der preis je nach kopien anzahl sich verändert (sprich, die ersten 100 kosten 10cent, danach nurnoch 9 cent usw).

Damit ihr nicht denkt dass ich nun eifnach abschreiben würde: Ich habe mit der extrernen .java datei schon mehr als ich sollte gemacht, das default Button und das Textfeld ist nur für mein wissen gedacht, weils mich immer tierisch nervt wenn ich das textfeld erst anklicken muss^^

Also, danke schonmal 🙂
 
Gleich mal eine Anmerkung fürs nächste mal: Bei Methoden und Variablen hast Du's schon richtig gemacht. Packages klein schreiben (weil's üblich ist). Auch nicht [c]camelCase[/c] sonder wirklich [c]kopierkosten[/c].

In Zeile 48 holst Du Dir dann einfach das Root-Pane des Fensters und setzt den Button als Default: [java=48]getRootPane().setDefaultButton(b);[/code]

Und wenn Du jetzt in Zeile 25, 30 und 40 keine JTextFields nimmst, sondern JLabel (willst ja nur ausgeben), dann landet der Fokus automatisch auf dem Eingabefeld. Alternativ; wenn Dir die JTextFields besser gefallen, sag denen, dass sie den Fokus nicht erhalten dürfen: [java=26]infos.setFocusable(false);[/code]
... die anderen außer Eingabe entsprechend.

[...] weils mich immer tierisch nervt wenn ich das textfeld erst anklicken muss^^
Gute Einstellung!

Ebenius
 

Neue Themen


Zurück
Oben