Grafische Oberfläsche Texfields

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von KirO, 17. November 2005 .

Schlagworte:
  1. 17. November 2005
    ehm hi
    ich hab da mal ne frage ich hab nun angefangen mit java und bin nun soweit, dass ich grafische oberfläschen bauen möchte. nun hab ich das problem ich möchte ein programm schreibene, was den Widerstand in einer Reinschaltung berechnet also widerstand = spannung / strom
    nun hab ich das problem dass ich es einfach nicht schaffe, dass er aus meinem textfield die zahl ausließt und dann in die entsprechende variable übergibt. mein widerstand, spannung, und strom sind mit double declariert.
    kann mir jemand helfen ?
     
  2. 17. November 2005
    Du kannst die Antwort einfach an einen String übergeben. Zum Beispiel:

    Code:
    String spannung = JOptionPane.showInputDialog("Wie hoch ist die Spannung?");
    EDIT: Achja, du musst für die Berechnung den String in einen int oder double parsen. Das kannst du z.B. über:

    Code:
    double u = Double.parseDouble(spannung);
     
  3. 18. November 2005
    aber wie bekomm ich dann bitte den wert aus dem textfield in die doublevariable ? das schaff ich net =(
     
  4. 18. November 2005
    baust dir die Oberfläche mit nem compiler oder schreibst die selbst?
    wennst mit compiler machst -> Mit welchem?
    mfg
     
  5. 18. November 2005
    ehm ja ka also ich benutz nen standart editor .. ehm und java compiler (Javac) ich poste einfach mal mein quelltext

    Code:
    import java.awt.*;
    import java.awt.event.*;
    
    /**
     *
     * Programm zum Berechnen von Strom
     *
     * @version 1.0 vom 16.11.2005
     * @KirO
     */
    
    public class Strom extends Frame {
     // Anfang Variablen
     private Label label1 = new Label();
     private Label label2 = new Label();
     private Button Berechnen = new Button();
     private Label label4 = new Label();
     private TextField Spannung = new TextField();
     private TextField Strom = new TextField();
     private Label label3 = new Label();
     // Ende Variablen
    
     public Strom(String title) {
     // Frame-Initialisierung
     super(title);
     addWindowListener(new WindowAdapter() {
     public void windowClosing(WindowEvent evt) { System.exit(0); }
     });
     int frameWidth = 214;
     int frameHeight = 208;
     setSize(frameWidth, frameHeight);
     Panel cp = new Panel(null);
     add(cp);
    
     // Anfang Komponenten
    
     label1.setBounds(10, 40, 85, 13);
     label1.setFont (new Font("MS Sans Serif", Font.PLAIN, 12));
     label1.setText("Spannung");
     cp.add(label1);
     label2.setBounds(10, 64, 78, 13);
     label2.setFont (new Font("MS Sans Serif", Font.PLAIN, 12));
     label2.setText("Strom");
     cp.add(label2);
     Berechnen.setBounds(51, 108, 108, 18);
     Berechnen.setLabel("Berechne");
     cp.add(Berechnen);
     Berechnen.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent evt) {
     BerechnenActionPerformed(evt);
     }
     });
    
     label4.setBounds(60, 11, 105, 13);
     label4.setText("Strom berechnen");
     cp.add(label4);
     Spannung.setBounds(120, 40, 65, 21);
     Spannung.setText("");
     cp.add(Spannung);
     Strom.setBounds(120, 64, 65, 21);
     Strom.setText("");
     cp.add(Strom);
     label3.setBounds(8, 144, 187, 21);
     label3.setText("");
     cp.add(label3);
     // Ende Komponenten
    
     setVisible(true);
     }
    
     // Anfang Ereignisprozeduren
     public void BerechnenActionPerformed(ActionEvent evt) {
     
     >>>>>> und hier muss dann der spass rein aber ka wie ^^ <<<<<<
     
     
     }
     // Ende Ereignisprozeduren
    
     public static void main(String[] args) {
     new Strom("Strom");
     }
    }
    
    ja und in der Hauptklasse hab ich für Widerstand und Spannung jeweils einen Setter. und die Hauptklasse heißt OhmGesetz1

    ich hoffe ihr könnt helfen danke ^^
     
  6. 19. November 2005
    Du musst selbstverständlich einen Actionlistener implementieren um die Eingaben abzufangen sobald auf berechnen gedrückt wird. Zudem fehlt dir das Ausgabefeld für den Widerstand! Wie du einen Actionlistener implementierst kannst du zum Beispiel hier sehen. Da du ein Panel verwendest kannst du den String mittels

    Code:
    String s = Strom.getText();
    zum Beispiel abrufen. Sofern es dann noch Fragen gibt, kann ich dir das Programm auch schnell programmieren. Aber selber nachdenken und schreiben bringt natürlich mehr :] .
     
  7. 19. November 2005
    ich probiers nun erstmal selber danke erstmal hat mir sau viel geholen nun muss ich das nurnoch umsetzen ^^
     
  8. 20. November 2005
    hmmm nun hab ich noch ein problem...
    ich hab nun das probiert aber umzusetzen aber geht noch net ganz.
    kannst du mir das mal programmieren und dann mal schicken?
    ich will das mal irgendwie nachvollziehen können und danach für die anderen funktionen selber schrieben wie z.b. strom ausrechen ect ...

    und noch ne andere frage: wie rufe ich bei java andere fomen auf ?
    geht das überhapt also ich hoffe mal
    MEGA THX KirO
     
  9. 20. November 2005
    Vllt. hilft dir das (Hab ein paar Sachen geändert, z.B. Swing statt AWT verwendet > musst du aber nicht machen)

    Code:
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.*;
    
    public class Strom extends JFrame implements ActionListener //Hier geändert
    {
     // Anfang Variablen (Hier in Swing geändert -> Vor die meisten Komponenten reicht es ein J zu schreiben ;)
     private JLabel label1 = new JLabel();
     private JLabel label2 = new JLabel();
     private JButton berechnen = new JButton();
     private JLabel label4 = new JLabel();
     private JTextField spannung = new JTextField();
     private JTextField strom = new JTextField();
     private JLabel label3 = new JLabel();
     // Ende Variablen
    
     public Strom (String title) 
     {
     // Frame-Initialisierung
     super(title);
    
     int frameWidth = 214;
     int frameHeight = 208;
     setSize(frameWidth, frameHeight);
     JPanel cp = new JPanel(null);
     add(cp);
    
     // Anfang Komponenten
    
     label1.setBounds(10, 40, 85, 13);
     label1.setFont (new Font("MS Sans Serif", Font.PLAIN, 12));
     label1.setText("Spannung");
     cp.add(label1);
     label2.setBounds(10, 64, 78, 13);
     label2.setFont (new Font("MS Sans Serif", Font.PLAIN, 12));
     label2.setText("Strom");
     cp.add(label2);
     berechnen.setBounds(51, 108, 108, 18);
     berechnen.setText("Berechne");
     cp.add(berechnen);
     
     //Dem Button mitteilen, dass wenn er gedrückt wurde die Methode actionPerformed
     //aufrufen soll ( this repräsentiert dieses Objekt(Klasse), wo die Methode drin ist)
     berechnen.addActionListener( this );
     //-------------------------------------------------------------------------
    
     label4.setBounds(60, 11, 105, 13);
     label4.setText("Strom berechnen");
     cp.add(label4);
     spannung.setBounds(120, 40, 65, 21);
     spannung.setText("");
     cp.add(spannung);
     strom.setBounds(120, 64, 65, 21);
     strom.setText("");
     cp.add(strom);
     label3.setBounds(8, 144, 187, 21);
     label3.setText("");
     cp.add(label3);
     // Ende Komponenten
    
     setVisible(true);
     }
    
     // Anfang Ereignisprozeduren //GEÄNDERT
     public void actionPerformed( ActionEvent e ) 
     {
     //Inhalt der Textfelder abfragen
     String inhaltSpannung = spannung.getText();
     String inhaltStrom = strom.getText();
     
     //Inhalt in Zahlen umwandeln --- Altenativ für Ganzzahlen:
     //int sp = Integer.parseInt( inhaltSpannung );
     double sp = Double.parseDouble( inhaltSpannung );
     double st = Double.parseDouble( inhaltStrom );
     
     //Wiederstand berechnen
     double wiederstand = sp / st;
     
     //Nun hast du den Wiederstand und kannst irgendwas damit machen..
     //Z.B. ausgeben:
     JOptionPane.showMessageDialog( this,
     "Der Wiederstand beträgt:\n" + wiederstand,
     "Ergebnis", 1 ); 
     }
    
     public static void main(String[] args) {
     new Strom("strom");
     }
    }
    
     
  10. 20. November 2005
    so geschafft danke an alle

    aber noch ne andere frage vllt hat sie ja jeder übersehen,
    wie rufe ich eine neue Form auf also jetze wollt ich ein auswahlmenü machen wo ich aussuchen kann was ich berechne wie rufe ich nun meine form auf ?

    Wichtig

    ich möchte das über ne coice form machen also
    öffnen sollte sich TestStrom_GUI wenn man auf den Ok button drückt
    (TestStrom_GUI heißt meine Datei)


    Mein Code:
    Code:
    import java.awt.*;
    import java.awt.event.*;
    
    /**
     *
     * Auswähl für Ohm'sche und Kirschhoff'sche Gestz
     *
     * @version 1.0 vom 20.11.2005
     * @KirO
     */
    
    public class Test_Auswahl_GUI extends Frame {
     // Anfang Variablen
     private Label label1 = new Label();
     private Choice ce1 = new Choice();
     private TextArea textArea1 = new TextArea("", 1, 1, TextArea.SCROLLBARS_NONE);
     private Button button1 = new Button();
     private Button OK = new Button();
     // Ende Variablen
    
     public Test_Auswahl_GUI(String title) {
     // Frame-Initialisierung
     super(title);
     addWindowListener(new WindowAdapter() {
     public void windowClosing(WindowEvent evt) { System.exit(0); }
     });
     int frameWidth = 290;
     int frameHeight = 314;
     setSize(frameWidth, frameHeight);
     Panel cp = new Panel(null);
     add(cp);
    
     // Anfang Komponenten
    
     label1.setBounds(56, 192, 185, 16);
     label1.setFont (new Font("MS Sans Serif", Font.BOLD, 14));
     label1.setText("Was wollen Sie machen ?");
     cp.add(label1);
     ce1.setBounds(8, 216, 265, 21);
     ce1.add("Stromstärke berechnen");
     ce1.add("Spannung berechnen");
     ce1.add("Widerstand berechnen");
     cp.add(ce1);
     textArea1.setBounds(8, 8, 265, 177);
     textArea1.setFont (new Font("MS Sans Serif", Font.PLAIN, 12));
     textArea1.setBackground(Color.WHITE);
     textArea1.setEditable(false);
     textArea1.setText("Herzlich Willkommen !\n\nMit diesem Programm können Sie anstellen: =)\n\n *** Ohm'sche Gesetz ***\n----------------------------------------------------------------\n - Stromspannung Berechnen\n - Stromstärke Berechnen\n - Widerstand Berechnen\n");
     cp.add(textArea1);
     button1.setBounds(64, 256, 73, 17);
     button1.setLabel("Beenden");
     cp.add(button1);
     button1.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent evt) {
     button1ActionPerformed(evt);
     }
     });
    
     OK.setBounds(144, 256, 73, 17);
     OK.setLabel("OK");
     cp.add(OK);
     OK.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent evt) {
     OKActionPerformed(evt);
     }
     });
    
     // Ende Komponenten
    
     setVisible(true);
     }
    
    
    
     // Anfang Ereignisprozeduren
     public void button1ActionPerformed(ActionEvent evt) {
     System.exit(0);
     }
     public void OKActionPerformed(ActionEvent evt) {
    
     }
     // Ende Ereignisprozeduren
    
     public static void main(String[] args) {
     new Test_Auswahl_GUI("Auswahlmenü");
     }
    }
    
    



    Ich hoffe mal ihr könnt mir helfen
    THX KiRO
     
  11. 21. November 2005
    Wie das im einzelnen aussieht hängt von deiner Klasse TestStrom_GUI ab.. Den Code unten könntest du mit der von mir geposteten Klasse Strom (oder auch deiner) verwenden..

    Code:
     public void OKActionPerformed(ActionEvent evt) 
     {
     int index = ce1.getSelectedIndex();
     
     switch ( index )
     {
     case 0:
     //Hier für Stromstärke
     // TestStrom_GUI gui = new TestStrom_GUI(); //Je nachdem wie deine Klasse TestStrom_GUI aussieht
     Strom gui = new Strom("Strom");
     
     break;
     case 1:
     //Hier für Spannung
     break;
     case 2:
     //Wiederstand
     break;
     }
     
     }
    
     
  12. 22. November 2005
    hmmm geht aber irgendwie nicht ich mach das einfach mal so das ich das ganze prog mal hochlade dann glaub ich das es einfacher ist.
    ware echt cool und sry das ich mich so doof anstelle aber wir arbeiten in der Schule nur mit Console und die Suxxk ziehmlich ^^

    MEGA THX KIRO

    Download
     
  13. 23. November 2005
    Also bei mir geht das, wenn ich bei der case (in Test_Auswahl_GUI.java) das schreibe:

    Code:
     switch ( index ) {
     case 0:
     TestStrom_GUI gui = new TestStrom_GUI("Strom");
     //Strom gui = new Strom("Strom");
     break;
     case 1:
     //Hier für Spannung
     TestSpannung_GUI guiS = new TestSpannung_GUI("Spannung");
     break;
     case 2:
     TestWi_GUI guiW = new TestWi_GUI("Wiederstand");
     //Wiederstand
     break;
     }
    
    Nur das
    Code:
     addWindowListener(new WindowAdapter() {
     public void windowClosing(WindowEvent evt) { System.exit(0); }
     });
    
    würd ich rausnehmen aus den einzelnen Klassen, sonst beendet der das Programm immer... (Erseztzen mit setVisible(false); o.ä.)
     
  14. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.