Ich mal wieder, bin inzwischen schon sehr viel weiter mit meinen Programm! Sind jetzt nur noch ein paar Kleinigkeiten.
JFormattedTextField:
Er übernimmt keine Kommazahlen, er schneidet hinter dem Komma alles weg. Kann ich dafür überhaupt das DecimalFormat benutzen? Aus der Dokumentaion werde ich nicht schlau.
Hohlzylinderbild:
Was und wohin schreibe ich das das Bild schliessen soll, wenn ich den Button "Zurück" betätige?
Wie gebe ich dem Bildfenster einen Titel?
class Hohlzylinderbe:
Wie gebe ich dem Dialogfenster eine Hintergrundfarbe?
Danke im vorraus für Eure Hilfe.
JFormattedTextField:
Er übernimmt keine Kommazahlen, er schneidet hinter dem Komma alles weg. Kann ich dafür überhaupt das DecimalFormat benutzen? Aus der Dokumentaion werde ich nicht schlau.
Hohlzylinderbild:
Was und wohin schreibe ich das das Bild schliessen soll, wenn ich den Button "Zurück" betätige?
Wie gebe ich dem Bildfenster einen Titel?
class Hohlzylinderbe:
Wie gebe ich dem Dialogfenster eine Hintergrundfarbe?
Danke im vorraus für Eure Hilfe.
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.text.*;
public class Hohlzylinder extends JFrame implements ActionListener
{
private JFormattedTextField tfd1;
private JFormattedTextField tfd2;
private JFormattedTextField tfh;
private double durchmesser1;
private double durchmesser2;
private double hoehe;
public Hohlzylinder ()
{
// Fenstereigenschaften
super ("gerader Hohlzylinder");
setSize (800, 400);
setLayout (new GridLayout (6, 1));
// Panels
JPanel titel = new JPanel();
JPanel durchmesser1 = new JPanel();
JPanel durchmesser2 = new JPanel();
JPanel hoehe = new JPanel();
JPanel berechnen = new JPanel();
JPanel button = new JPanel();
// Panelhintergrund
titel.setBackground (Color.yellow);
durchmesser1.setBackground (Color.cyan);
durchmesser2.setBackground (Color.cyan);
hoehe.setBackground (Color.cyan);
berechnen.setBackground (Color.cyan);
button.setBackground (Color.red);
// Labels
JLabel titela = new JLabel ("Stereometrie");
JLabel durchmesser1a = new JLabel ("Durchmesser d_1:");
JLabel durchmesser2a = new JLabel ("Durchmesser d_2:");
JLabel hoehea = new JLabel ("Höhe h:");
// Labeleigenschaften
titela.setFont(new Font("SansSerif", Font.PLAIN,40));
durchmesser1a.setFont (new Font("SansSerif", Font.PLAIN,20));
durchmesser2a.setFont (new Font("SansSerif", Font.PLAIN,20));
hoehea.setFont (new Font("SansSerif", Font.PLAIN,20));
// Buttons
JButton zurueck = new JButton ("Zurück");
JButton beenden = new JButton ("Programm beenden");
JButton berechnena = new JButton ("Berechnen");
// Textfeld
tfd1 = new JFormattedTextField (new DecimalFormat ());
tfd2 = new JFormattedTextField (new DecimalFormat ());
tfh = new JFormattedTextField (new DecimalFormat ());
tfd1.setColumns (20);
tfd2.setColumns (20);
tfh.setColumns (20);
// Belegung der Panels
titel.add (titela);
durchmesser1.add (durchmesser1a);
durchmesser1.add (tfd1);
durchmesser2.add (durchmesser2a);
durchmesser2.add (tfd2);
hoehe.add (hoehea);
hoehe.add (tfh);
berechnen.add (berechnena);
button.add (zurueck);
button.add (beenden);
// Einfügen der Panels
add (titel);
add (durchmesser1);
add (durchmesser2);
add (hoehe);
add (berechnen);
add (button);
// Sichtbarkeit des Fensters
setVisible (true);
// Einbinden der Buttons in den ActionListener
zurueck.addActionListener (this);
beenden.addActionListener (this);
berechnena.addActionListener (this);
tfd1.addActionListener (this);
tfd2.addActionListener (this);
tfh.addActionListener (this);
Hohlzylinderbild();
}
public void Hohlzylinderbild ()
{
JFrame frame = new JFrame();
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
ImageIcon bild = new ImageIcon (Hohlzylinderbild.class.getResource ("dix.jpg"));
JLabel Pic = new JLabel (bild);
frame.getContentPane().add(Pic,BorderLayout.CENTER);
frame.setLocation (800, 0);
frame.pack();
frame.setVisible (true);
}
public void actionPerformed(final ActionEvent a)
{
if (a.getActionCommand().equals("Zurück"))
{
Rund b = new Rund();
setVisible (false);
}
if (a.getActionCommand().equals("Programm beenden"))
{
System.exit(0);
}
if (a.getActionCommand().equals ("Berechnen"))
{
durchmesser1 = Double.parseDouble (tfd1.getText());
durchmesser2 = Double.parseDouble (tfd2.getText());
hoehe = Double.parseDouble (tfh.getText());
Hohlzylinderbe d = new Hohlzylinderbe (this, true, durchmesser1, durchmesser2, hoehe);
d.setVisible (true);
return;
}
}
}
class Hohlzylinderbe extends JDialog
{
private double phi = 3.1416;
private double A_O;
private double A_M;
private double V;
private double durchmesser1;
private double durchmesser2;
private double hoehe;
private JLabel label1;
private JLabel label2;
private JLabel label3;
public Hohlzylinderbe (final Frame parent, final boolean modal,
final double durchmesser1,
final double durchmesser2,
final double hoehe)
{
super (parent, "geraden Hohlzylinder berechnen", modal);
this. durchmesser1 = durchmesser1;
this. durchmesser2 = durchmesser2;
this.hoehe = hoehe;
label1 = new JLabel ("");
label2 = new JLabel ("");
label3 = new JLabel ("");
add (label1, BorderLayout.NORTH);
add (label2, BorderLayout.CENTER);
add (label3, BorderLayout.SOUTH);
setSize (300,200);
setLocationRelativeTo (parent);
berechnen();
}
private void berechnen()
{
A_M = phi * hoehe * (durchmesser1 + durchmesser2);
A_O = (phi / 2) * (durchmesser2 + durchmesser1) * (2 * hoehe + (durchmesser1 - durchmesser2));
V = (phi / 4) * hoehe * ((durchmesser2 * durchmesser2) + (durchmesser1 * durchmesser1));
label1.setText (" Oberfläche: "+A_O);
label2.setText (" Mantelfläche: "+A_M);
label3.setText (" Volumen: "+V);
}
}