package ohmscher_widerstand; import java.awt.*; import java.awt.event.*; import java.applet.*; /** *

Überschrift: Ohmscher Widerstand

*

Beschreibung: Programm zur Berechnung Ohmscher Widerstände in verschiedenen metallischen Leitern.

*

Copyright: Copyright (c) 2002

*

Organisation:

* @author Erik Streb, mail@erikstreb.de, www.erikstreb.de * @version 1.0 */ public class OhmscherWiderstand extends Applet { boolean isStandalone = false; Button berechnen_knopf = new Button(); Label ergebnisLabel = new Label(); TextField ergebnisFeld = new TextField(); TextField leiterquerschnittFeld = new TextField(); Label leiterquerschnittLabel = new Label(); TextField leiterlaengeFeld = new TextField(); Label leiterlaengeLabel = new Label(); Choice metallAuswahl = new Choice(); Label metallLabel = new Label(); double spezifischeWiderstaende[] = {0.029,0.22,0.13,0.023,0.0175,0.07,0.11,0.0165,0.06,0.12,1.1,0.5,0.43,0.42}; Label fehlerLabel1 = new Label(); TextField leiterradiusFeld = new TextField(); Label leiterradiusLabel = new Label(); Label leiterdurchmesserLabel = new Label(); TextField leiterdurchmesserFeld = new TextField(); Label fehlerLabel2 = new Label(); //Parameterwert holen public String getParameter(String key, String def) { return isStandalone ? System.getProperty(key, def) : (getParameter(key) != null ? getParameter(key) : def); } //Das Applet konstruieren public OhmscherWiderstand() { } //Das Applet initialisieren public void init() { try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } //Initialisierung der Komponenten private void jbInit() throws Exception { this.setLayout(null); leiterlaengeLabel.setText("Leiterlänge in m:"); leiterlaengeLabel.setBounds(14, 14, 150, 25); leiterlaengeFeld.setText(""); leiterlaengeFeld.setBounds(174, 14, 115, 25); leiterradiusLabel.setText("Leiterradius in mm:"); leiterradiusLabel.setBounds(14, 44, 150, 25); leiterradiusFeld.setText(""); leiterradiusFeld.setBounds(174, 44, 115, 25); leiterdurchmesserLabel.setText("Leiterdurchmesser in mm:"); leiterdurchmesserLabel.setBounds(14, 74, 150, 25); leiterdurchmesserFeld.setText(""); leiterdurchmesserFeld.setBounds(174, 74, 115, 25); leiterquerschnittLabel.setText("Leiterquerschnitt in mm²:"); leiterquerschnittLabel.setBounds(14, 104, 150, 25); leiterquerschnittFeld.setText(""); leiterquerschnittFeld.setBounds(174, 104, 115, 25); metallLabel.setText("Material des Leiters:"); metallLabel.setBounds(14, 134, 150, 25); metallAuswahl.setBounds(174, 134, 115, 25); metallAuswahl.add("Aluminium"); metallAuswahl.add("Blei"); metallAuswahl.add("Eisen"); metallAuswahl.add("Gold"); metallAuswahl.add("Kupfer"); metallAuswahl.add("Nickel"); metallAuswahl.add("Platin"); metallAuswahl.add("Silber"); metallAuswahl.add("Wolfram"); metallAuswahl.add("Zinn"); metallAuswahl.add("Chromnickel"); metallAuswahl.add("Konstantan"); metallAuswahl.add("Manganin"); metallAuswahl.add("Nickelin"); fehlerLabel1.setFont(new java.awt.Font("Dialog", 1, 12)); fehlerLabel1.setForeground(Color.red); fehlerLabel1.setBounds(14, 174, 275, 25); fehlerLabel2.setFont(new java.awt.Font("Dialog", 1, 12)); fehlerLabel2.setForeground(Color.red); fehlerLabel2.setBounds(14, 194, 275, 25); berechnen_knopf.setLabel("Berechnen"); berechnen_knopf.setBounds(14, 224, 275, 25); berechnen_knopf.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { berechnen_knopf_actionPerformed(e); } }); ergebnisLabel.setText("Widerstand in Ohm:"); ergebnisLabel.setBounds(14, 254, 150, 25); ergebnisFeld.setBounds(174, 254, 115, 25); this.add(leiterlaengeLabel, null); this.add(leiterlaengeFeld, null); this.add(leiterradiusLabel, null); this.add(leiterradiusFeld, null); this.add(leiterdurchmesserLabel, null); this.add(leiterdurchmesserFeld, null); this.add(leiterquerschnittLabel, null); this.add(leiterquerschnittFeld, null); this.add(metallLabel, null); this.add(metallAuswahl, null); this.add(fehlerLabel1, null); this.add(fehlerLabel2, null); this.add(berechnen_knopf, null); this.add(ergebnisLabel, null); this.add(ergebnisFeld, null); } //Das Applet starten public void start() { } //Das Applet anhalten public void stop() { } //Das Applet löschen public void destroy() { } //Applet-Information holen public String getAppletInfo() { return "Autor: Erik Streb; Homepage: http://www.erikstreb.de; E-Mail: mail@erikstreb.de"; } //Parameter-Infos holen public String[][] getParameterInfo() { return null; } //Widerstand berechnen public double ergebnis (double laenge, double querschnitt, double spezwid) { return (laenge*spezwid/querschnitt); } public boolean felder_korrekt_ausgefuellt() { boolean alles_ok = true; double llaenge = -1; double lquerschnitt = -1; // erst mal die Fehlerfelder löschen fehlerLabel1.setText(""); fehlerLabel2.setText(""); // ob überhaupt Werte in die Felder eingegeben wurden if (leiterradiusFeld.getText().length()==0 && leiterdurchmesserFeld.getText().length()==0 && leiterquerschnittFeld.getText().length()==0) { fehlerLabel1.setText("Es muss entweder ein Leiterradius, -durchmesser"); fehlerLabel2.setText("oder -querschnitt angegeben werden!!!"); alles_ok = false; } else if ((leiterradiusFeld.getText().length()>0 && leiterdurchmesserFeld.getText().length()>0) || (leiterradiusFeld.getText().length()>0 && leiterquerschnittFeld.getText().length()>0) || (leiterdurchmesserFeld.getText().length()>0 && leiterquerschnittFeld.getText().length()>0)) { fehlerLabel1.setText("Bitte nur entweder Leiterradius, -durchmesser"); fehlerLabel2.setText("oder -querschnitt angegeben!!!"); alles_ok = false; } if (leiterlaengeFeld.getText().length()==0) { fehlerLabel1.setText("Es muss eine Leiterlänge angegeben werden!!!"); fehlerLabel2.setText(""); alles_ok = false; } if (alles_ok) { // ob es double Werte sind if (leiterradiusFeld.getText().length()>0) { try{ Double d_obj = new Double(leiterradiusFeld.getText()); lquerschnitt = Math.PI*Math.pow(d_obj.doubleValue(),2); leiterradiusFeld.setText(String.valueOf(Math.abs(d_obj.doubleValue()))); leiterdurchmesserFeld.setText(""); leiterquerschnittFeld.setText(""); } catch (NumberFormatException exc){ alles_ok = false; fehlerLabel1.setText("Leiterradius muss eine Zahl, z.B. 2.5 sein!!!"); } } else if (leiterdurchmesserFeld.getText().length()>0) { try{ Double d_obj = new Double(leiterdurchmesserFeld.getText()); lquerschnitt = Math.PI*Math.pow(d_obj.doubleValue()/2,2); leiterradiusFeld.setText(""); leiterdurchmesserFeld.setText(String.valueOf(Math.abs(d_obj.doubleValue()))); leiterquerschnittFeld.setText(""); } catch (NumberFormatException exc){ alles_ok = false; fehlerLabel1.setText("Leiterdurchmesser muss eine Zahl, z.B. 2.5 sein!!!"); } } else if (leiterquerschnittFeld.getText().length()>0) { try{ Double d_obj = new Double(leiterquerschnittFeld.getText()); lquerschnitt = d_obj.doubleValue(); leiterradiusFeld.setText(""); leiterdurchmesserFeld.setText(""); leiterquerschnittFeld.setText(String.valueOf(Math.abs(lquerschnitt))); } catch (NumberFormatException exc){ alles_ok = false; fehlerLabel1.setText("Leiterquerschnitt muss eine Zahl, z.B. 2.5 sein!!!"); } } try{ Double d_obj = new Double(leiterlaengeFeld.getText()); llaenge = d_obj.doubleValue(); leiterlaengeFeld.setText(String.valueOf(Math.abs(llaenge))); } catch (NumberFormatException exc){ alles_ok = false; fehlerLabel1.setText("Leiterlänge muss eine Zahl, z.B. 7.5 sein!!!"); } } if (alles_ok) { fehlerLabel1.setText(""); fehlerLabel2.setText(""); } return alles_ok; } public void ergebnis_anzeigen() { double widerstand = 0; if (leiterradiusFeld.getText().length()>0) widerstand = ergebnis(Double.valueOf(leiterlaengeFeld.getText()).doubleValue(),Math.PI*Math.pow(Double.valueOf(leiterradiusFeld.getText()).doubleValue(),2),spezifischeWiderstaende[metallAuswahl.getSelectedIndex()]); else if (leiterdurchmesserFeld.getText().length()>0) widerstand = ergebnis(Double.valueOf(leiterlaengeFeld.getText()).doubleValue(),Math.PI*Math.pow(Double.valueOf(leiterdurchmesserFeld.getText()).doubleValue()/2,2),spezifischeWiderstaende[metallAuswahl.getSelectedIndex()]); else if (leiterquerschnittFeld.getText().length()>0) widerstand = ergebnis(Double.valueOf(leiterlaengeFeld.getText()).doubleValue(),Double.valueOf(leiterquerschnittFeld.getText()).doubleValue(),spezifischeWiderstaende[metallAuswahl.getSelectedIndex()]); if (widerstand>=1000000000) { widerstand = widerstand/1000000000; ergebnisLabel.setText("Widerstand in Giga-Ohm:"); } else if (widerstand>=1000000) { widerstand = widerstand/1000000; ergebnisLabel.setText("Widerstand in Mega-Ohm:"); } else if (widerstand>=1000) { widerstand = widerstand/1000; ergebnisLabel.setText("Widerstand in Kilo-Ohm:"); } ergebnisFeld.setText(Double.toString(widerstand)); } void berechnen_knopf_actionPerformed(ActionEvent e) { if (felder_korrekt_ausgefuellt()) ergebnis_anzeigen(); } }