Swing + eingabefeld

Hallo Leute,

wie kann ich in Swing ein Eingabefeld realisieren?
Quasi: Wert eingeben und dieser wird dann mit anderen addiert in einer anderen Spalte gezeigt.

Grüße Erich

Auch hallo.

wie kann ich in Swing ein Eingabefeld realisieren?
Quasi: Wert eingeben und dieser wird dann mit anderen addiert
in einer anderen Spalte gezeigt.

Hier ein Beispiel (Borland JBuilder '05 Foundation). Allerdings noch ohne Codeimplementierung und wenig ästhetisch…

package swing\_beispiel;

import java.awt.BorderLayout;
import java.awt.Frame;

import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.\*;
import javax.swing.JTextArea;

/\*\*
 \* Title: 
 \*
 \* Description: 
 \*
 \* Copyright: Copyright (c) 2005 
 \*
 \* Company: 
 \*
 \* @author not attributable
 \* @version 1.0
 \*/
public class Dialog1 extends JDialog {
 JPanel panel1 = new JPanel();
 BorderLayout borderLayout1 = new BorderLayout();
 JTextField jTextField1 = new JTextField();
 JTextArea jTextArea1 = new JTextArea();
 public Dialog1(Frame owner, String title, boolean modal) {
 super(owner, title, modal);
 try {
 setDefaultCloseOperation(DISPOSE\_ON\_CLOSE);
 jbInit();
 pack();
 } catch (Exception exception) {
 exception.printStackTrace();
 }
 }

 public Dialog1() {
 this(new Frame(), "Dialog1", false);
 }

 private void jbInit() throws Exception {
 panel1.setLayout(borderLayout1);
 jTextField1.setText("jTextField1");
 jTextArea1.setText("jTextArea1");
 getContentPane().add(panel1);
 panel1.add(jTextField1, java.awt.BorderLayout.NORTH);
 panel1.add(jTextArea1, java.awt.BorderLayout.WEST);
 }
}

Pseudocode: beim i-ten Drücken der Returntaste erscheint an Pos[i] der jTextArea1 die Eingabe
Suche auch unter http://www.javabuch.de für Weiteres :wink:

HTH
mfg M.L.

Servus,

vielen Dank für den Code,

wo ist die Superclasse JDIALOG ?
…extends JDialog…

Grüße Erich

Hi,

schon mal einen Blick in die Doku geworfen? Ist hilfreich…

http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/…

Gruss,

Herb

Hallo.

schon mal einen Blick in die Doku geworfen? Ist hilfreich…

http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/…

Also mein JBuilder arbeitet mit der 1.4 JDK. Bei 1.5 hab’ ich nur die Runtime in den Browsern drin.
Aber hier ein Bericht über die Fallstricke mit Java 1.5: http://www.javamagazin.de/itr/online_artikel/psecom,…

An der Stelle eine (mir peinliche) Frage: wo finde ich in NetBeans 4.0 RC1 DAS Formular zur Oberflächengestaltung ? Damit ist nicht das Fenster ‚GUI Editing‘ gemeint, sondern das, wo die GUI gebaut werden kann…

mfg M.L.

Hi ho,

Also mein JBuilder arbeitet mit der 1.4 JDK. Bei 1.5 hab’ ich
nur die Runtime in den Browsern drin.
Aber hier ein Bericht über die Fallstricke mit Java 1.5:
http://www.javamagazin.de/itr/online_artikel/psecom,…

da der OP nicht geschrieben hat, welchen JDK er verwendet, hab ich einfacherweise die aktuelle Version verlinkt. Für die Version 1.4.2 ist die Doku hier:
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/…

An der Stelle eine (mir peinliche) Frage: wo finde ich in
NetBeans 4.0 RC1 DAS Formular zur Oberflächengestaltung ?
Damit ist nicht das Fenster ‚GUI Editing‘ gemeint, sondern
das, wo die GUI gebaut werden kann…

Da hilft vielleicht ein neuer Thread hier. Ich selber verwende Eclipse, bzw. das SAP Netweaver Developer Studio (auch nur ein verwurschteltes Eclipse). Und wenn ich eine GUI stricke, dann mach ich das von Hand, die ganzen GUI Machines sind mir im Java Umfeld suspekt :wink:

Grüsse,

Herb

getText() implementieren
Servus,

auch ne noch dämlichere Frage:

wie implementiere ich getText.
d.h. ich habe ein fertiges Gerüst mit 3 Textfeldern (action listener)

Wie greife ich nun auf die Daten der Felder zu?
bzw. auslesen und in anderer Tabelle als bsp. Summe ausgeben?

Grüße Erich

weiterführende Hilfe
Hi,

wenn http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/… nicht hilft, dann empfehle ich http://www.galileocomputing.de/openbook/javainsel4/ , oder genauer http://www.galileocomputing.de/openbook/javainsel4/j… aufmerksam zu lesen.

Gruss,

Herb

Mit Bitte zum Umbau :wink:
Hallo Leute,
wäre super nett, wenn mir jemand dieses Beispiel umbauen könnte.
In die oberen Textfelder sollen Zahlen eingegeben werden. Im untersten Feld soll die Summe der beiden angezeigt werden.

Wäre super nett, wenn es jamand fix umbauen könnte.
Bitte den Code posten und als Mail schicken.

VIELEN DANK

Erich

/* Listing3702.java */

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

public class Listing3702
extends JFrame
implements ActionListener, CaretListener
{
public Listing3702()
{
super(„JTextField“);
addWindowListener(new WindowClosingAdapter(true));
Container cp = getContentPane();
cp.setLayout(new FlowLayout());
JTextField tf;
//Linksbündiges Textfeld mit „Hello, world“
tf = new JTextField(„Hello, world“);
cp.add(tf);
//Leeres Textfeld mit 20 Spalten
tf = new JTextField(20);
cp.add(tf);
//Textfeld mit „Hello, world“ und 20 Spalten
tf = new JTextField(„Hello, world“, 20);
tf.addActionListener(this);
tf.addCaretListener(this);
cp.add(tf);
}

public void actionPerformed(ActionEvent event)
{
JTextField tf = (JTextField)event.getSource();
System.out.println("—ActionEvent—");
System.out.println(tf.getText());
System.out.println(tf.getSelectedText());
System.out.println(tf.getSelectionStart());
System.out.println(tf.getSelectionEnd());
System.out.println(tf.getCaretPosition());
}

public void caretUpdate(CaretEvent event)
{
System.out.println("—CaretEvent—");
System.out.println(event.getDot());
System.out.println(event.getMark());
}

public static void main(String[] args)
{
Listing3702 frame = new Listing3702();
frame.setLocation(100, 100);
frame.setSize(300, 150);
frame.setVisible(true);
}
}

/* WindowClosingAdapter.java */

import java.awt.*;
import java.awt.event.*;

public class WindowClosingAdapter
extends WindowAdapter
{
private boolean exitSystem;

/**
* Erzeugt einen WindowClosingAdapter zum Schliessen
* des Fensters. Ist exitSystem true, wird das komplette
* Programm beendet.
*/
public WindowClosingAdapter(boolean exitSystem)
{
this.exitSystem = exitSystem;
}

/**
* Erzeugt einen WindowClosingAdapter zum Schliessen
* des Fensters. Das Programm wird nicht beendet.
*/
public WindowClosingAdapter()
{
this(false);
}

public void windowClosing(WindowEvent event)
{
event.getWindow().setVisible(false);
event.getWindow().dispose();
if (exitSystem) {
System.exit(0);
}
}
}

Keine Hausaufgaben
Hi,

das hier ist kein Hausaufgabenerledigungsforum, hier soll Wissen vermittelt werden. Wissen erarbeitet man sich, in dem man selber arbeitet. Wissen wird nicht geschenkt. Wenn Du ein konkretes Verständnisproblem hast, dann frag ruhig. Aber Hausaufgaben sind zum Selbermachen da.

Gruss,
Herb

Jo weiss ich auch,

also:

einen Button habe ich schon eingefügt. Und auch schon benannt.

jetzt muss ich folgendes noch hinzufügen:

  1. on click… werte übergeben und ausgeben.

Wie baue ich das nun ein.

Vor allem das auslesen mit gettext() bekomme ich nicht hin.

nur eine Beispielhafter zugriff, zum quellcode würde mich schon sehr helfen.

Danke erich

na denn…
Hi ho,

na denn…

Also, da Dein Listing3702 den ActionListener implementiert reicht es, wenn Du mit dem Button mitteilst, dass da wer auf ihn hört:

button.addActionListener(this);

In der Methode actionPerformed(…) kannst Du dann die Quelle des Events (wenn einer den Button drückt zum Beispiel) herausfinden:

if(event.getSource() == button)

und dann auf die JTextField Elemente zugreifen. Dazu hab ich die als Member deklariert (macht die Sache einfacher)

Also hier mal das überarbeitete Listing:

/\* Listing3702.java \*/

import java.awt.\*;
import java.awt.event.\*;
import javax.swing.\*;
import javax.swing.event.\*;

public class Listing3702 extends JFrame implements ActionListener, CaretListener
{
 JTextField tf1 = null;
 JTextField tf2 = null;
 JTextField tf3 = null;
 JButton button = null;
 public Listing3702()
 {
 super("JTextField");
 addWindowListener(new WindowClosingAdapter(true));
 Container cp = getContentPane();
 cp.setLayout(new FlowLayout());
 //Linksbündiges Textfeld mit "Hello, world"
 tf1 = new JTextField("Hello, world");
 cp.add(tf1);
 //Leeres Textfeld mit 20 Spalten
 tf2 = new JTextField(20);
 cp.add(tf2);
 //Textfeld mit "Hello, world" und 20 Spalten
 tf3 = new JTextField("Hello, world", 20);
 tf3.addActionListener(this);
 tf3.addCaretListener(this);
 cp.add(tf3);

 button = new JButton("OK");
 cp.add(button);
 button.addActionListener(this);
 }

 public void actionPerformed(ActionEvent event)
 {
 if(event.getSource() == tf3)
 {
 JTextField tf = (JTextField) event.getSource();
 System.out.println("---ActionEvent---");
 System.out.println(tf.getText());
 System.out.println(tf.getSelectedText());
 System.out.println(tf.getSelectionStart());
 System.out.println(tf.getSelectionEnd());
 System.out.println(tf.getCaretPosition());
 }
 if(event.getSource() == button)
 {
 String text = tf1.getText();
 tf2.setText(text);
 }
 }

 public void caretUpdate(CaretEvent event)
 {
 System.out.println("---CaretEvent---");
 System.out.println(event.getDot());
 System.out.println(event.getMark());
 }

 public static void main(String[] args)
 {
 Listing3702 frame = new Listing3702();
 frame.setLocation(100, 100);
 frame.setSize(300, 150);
 frame.setVisible(true);
 }






 public class WindowClosingAdapter extends WindowAdapter
 {
 private boolean exitSystem;

 /\*\*
 \* Erzeugt einen WindowClosingAdapter zum Schliessen
 \* des Fensters. Ist exitSystem true, wird das komplette
 \* Programm beendet.
 \*/
 public WindowClosingAdapter(boolean exitSystem)
 {
 this.exitSystem = exitSystem;
 }

 /\*\*
 \* Erzeugt einen WindowClosingAdapter zum Schliessen
 \* des Fensters. Das Programm wird nicht beendet.
 \*/
 public WindowClosingAdapter()
 {
 this(false);
 }

 public void windowClosing(WindowEvent event)
 {
 event.getWindow().setVisible(false);
 event.getWindow().dispose();
 if (exitSystem)
 {
 System.exit(0);
 }
 }
 }


}

Gruss,

Herb

Ja vielen Dank,

habe es soeben ausprobiert.
Es funzt.
Der Grundstein ist schonmal da
vielen Dank.

Muss ich bei meinem Ziel ‚Zahlen berechnen‘ die Strings nicht ‚parsen‘ oder umbauen?

Grüße Erich

Hi ho,

ja, den String musst Du parsen.

String nr = "60.555";
float f = Float.parseFloat(nr);

Danach kannst Du die floats (Float weil Kommazahl) addieren.

Gruss,

Herb

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ja servus,

danke,

ich habe es soeben ausprobiert funzt.
Aber…
setText kann ja nur Strings abbilden.

und ich möchte ja werte addieren…

d.h. von string zu float
und dann von float wieder zu string

odä?

Erich

Abschluss
Hi,

in die Doku zu den verschiedenen Klassen, die Du so verwendest, da schaust Du nie rein, oder?

Einfachste und schmutzigste Lösung ist ein „“+floatvalue, das erzeugt logischerweise ein neues Stringobjekt welches den Floatwert enthält.

So, und jetzt les die Links oben von mir…

Gruss,

Herb