/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* jPQuadrat.java
*
* Created on 12.06.2009, 08:34:24
*/
package geometrischeformen.rechteck;
import geometrischeformen.*;
import java.awt.*;
import javax.swing.*;
import tastaturen.*;
/**
*
* @author petrenko
*/
public class jPQuadrat extends javax.swing.JPanel
{
int minabstand=6;
boolean toushpad=false;
double a=0.0;
/** Creates new form jPQuadrat */
public jPQuadrat()
{
initComponents();
initEventComponents();
}
/**
* Eigene Events werden fuer Eingabefelder angelegt
*/
private void initEventComponents()
{
jTFSeite.getDocument().addDocumentListener(new javax.swing.event.DocumentListener() {
public void changedUpdate(javax.swing.event.DocumentEvent e){}
public void removeUpdate(javax.swing.event.DocumentEvent e) {}
public void insertUpdate(javax.swing.event.DocumentEvent e) {if(toushpad)werteBerechnen();}
});
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jBLoeschen = new javax.swing.JButton();
jLSeite = new javax.swing.JLabel();
jTFSeite = new javax.swing.JTextField();
jLMm = new javax.swing.JLabel();
jLa1 = new javax.swing.JLabel();
jLa2 = new javax.swing.JLabel();
setLayout(null);
jBLoeschen.setText("Löschen");
jBLoeschen.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jBLoeschenActionPerformed(evt);
}
});
add(jBLoeschen);
jBLoeschen.setBounds(50, 30, 170, 50);
jLSeite.setText("Seite a eingeben:");
add(jLSeite);
jLSeite.setBounds(100, 110, 170, 50);
jTFSeite.setText("0.0");
jTFSeite.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jTFSeiteMouseClicked(evt);
}
});
jTFSeite.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTFSeiteActionPerformed(evt);
}
});
add(jTFSeite);
jTFSeite.setBounds(220, 150, 140, 50);
jLMm.setText("mm");
add(jLMm);
jLMm.setBounds(60, 200, 90, 50);
jLa1.setText("a");
add(jLa1);
jLa1.setBounds(220, 220, 90, 50);
jLa2.setText("a");
add(jLa2);
jLa2.setBounds(170, 220, 90, 50);
}// </editor-fold>
private void jTFSeiteMouseClicked(java.awt.event.MouseEvent evt) {
callTouchNumPad(toushpad, jTFSeite);
}
private void jTFSeiteActionPerformed(java.awt.event.ActionEvent evt) {
werteBerechnen();
}
private void jBLoeschenActionPerformed(java.awt.event.ActionEvent evt) {
jTFSeite.setText("0.0");
a=0.0;
}
// Variables declaration - do not modify
private javax.swing.JButton jBLoeschen;
private javax.swing.JLabel jLMm;
private javax.swing.JLabel jLSeite;
private javax.swing.JLabel jLa1;
private javax.swing.JLabel jLa2;
private javax.swing.JTextField jTFSeite;
// End of variables declaration
/**
* Methode zeichnet den Gehrungsschnitt
*
* @param g
*/
@Override
protected void paintComponent( Graphics g )
{
//2D grafische Komponente laden
Graphics2D g2D = (Graphics2D) g;
super.paintComponent( g2D );
jBerechnungen berechnung= new jBerechnungen();
//Hohe und breite des Panels
int lHohe=this.getHeight();
int lBreite =this.getWidth();
//Button Loeschen positionieren und Font setzen
jBLoeschen.setBounds(0, 0, jBLoeschen.getSize().width, jBLoeschen.getSize().height);
jBLoeschen.setFont(this.getFont());
//Label Seite eingeben positionieren und Font setzen
jLSeite.setBounds(jBLoeschen.getSize().width, 0, jLSeite.getSize().width, jLSeite.getSize().height);
jLSeite.setFont(this.getFont());
//BTextFeld Seite eingeben positionieren und Font setzen
jTFSeite.setBounds(jBLoeschen.getSize().width+jLSeite.getSize().width,0,jTFSeite.getSize().width,jTFSeite.getSize().height);
jTFSeite.setFont(this.getFont());
//Label mm positionieren und Font setzen
jLMm.setBounds(jBLoeschen.getSize().width+jLSeite.getSize().width+jTFSeite.getSize().width, 0, jLMm.getSize().width, jLMm.getSize().height);
jLMm.setFont(this.getFont());
//Seite a1 Font
jLa1.setFont(this.getFont());
//Seite a2 Font
jLa2.setFont(this.getFont());
//Oberen Abstand berechnen
int obererAbstand = jBLoeschen.getSize().height+jLa1.getSize().height;
//Unteren Abstand berechnen
int untererAbstand = 0;
//Rechten Abstand berechnen
int rechterAbstand =jLa2.getSize().width;
//Linken Abstand berechnen
int linkenAbstand = 0;
int BoX = berechnung.getKleinstenInBoxWert(lHohe, lBreite, obererAbstand, untererAbstand, rechterAbstand, linkenAbstand);
//Label a1 und a2 setzen
jLa1.setBounds(lBreite/2, lHohe/2-BoX/2-jLa1.getSize().height, jLa1.getSize().width, jLa1.getSize().height);
jLa2.setBounds(lBreite/2+BoX/2+2*minabstand, lHohe/2-jLa2.getSize().height/2, jLa2.getSize().width, jLa2.getSize().height);
//Gefulltes Rechteck zeichnen mit Farbe
g2D.setColor(new Color(244,164,96)); //Farbe setzen
g2D.fillRect(lBreite/2-BoX/2, lHohe/2-BoX/2, BoX, BoX);
g2D.setColor(Color.BLACK); //Farbe setzen
//BoX Quadrat zeichnen
g2D.drawLine(lBreite/2-BoX/2, lHohe/2-BoX/2, lBreite/2+BoX/2, lHohe/2-BoX/2);
g2D.drawLine(lBreite/2-BoX/2, lHohe/2-BoX/2, lBreite/2-BoX/2, lHohe/2+BoX/2);
g2D.drawLine(lBreite/2+BoX/2, lHohe/2-BoX/2, lBreite/2+BoX/2, lHohe/2+BoX/2);
g2D.drawLine(lBreite/2-BoX/2, lHohe/2+BoX/2, lBreite/2+BoX/2, lHohe/2+BoX/2);
g2D.setColor(Color.BLUE); //Farbe setzen
int wert=2;
//BoX Quadrat Abmessungen zeichnen
g2D.drawLine(lBreite/2-BoX/2, lHohe/2-BoX/2-(minabstand+wert), lBreite/2+BoX/2, lHohe/2-BoX/2-(minabstand+wert));
g2D.drawLine(lBreite/2-BoX/2, lHohe/2-BoX/2-wert, lBreite/2-BoX/2, lHohe/2-BoX/2-(2*minabstand+wert));
g2D.drawLine(lBreite/2+BoX/2, lHohe/2-BoX/2-wert, lBreite/2+BoX/2, lHohe/2-BoX/2-(2*minabstand+wert));
g2D.drawLine(lBreite/2+BoX/2+(minabstand+wert), lHohe/2-BoX/2, lBreite/2+BoX/2+(minabstand+wert), lHohe/2+BoX/2);
g2D.drawLine(lBreite/2+BoX/2+wert, lHohe/2-BoX/2, lBreite/2+BoX/2+(2*minabstand+wert), lHohe/2-BoX/2);
g2D.drawLine(lBreite/2+BoX/2+wert, lHohe/2+BoX/2, lBreite/2+BoX/2+(2*minabstand+wert), lHohe/2+BoX/2);
}
/**
* Schaltet die Toushpadtastatur ein oder aus
* @param option
*/
public void setToushPad(boolean option)
{
toushpad=option;
}
/**
* Ruft die Nummerische Touchscreen Tastatur auf,
* wenn der Flag ts auf TRUE gesetzt wird
* @param ts
* @param jtf
*/
public void callTouchNumPad(boolean ts,JTextField jtf)
{
if(ts)
{
NumTastaturdialog st= new NumTastaturdialog((JPanel)this, true,jtf);
st.setLocation(jtf.getLocationOnScreen().x+jtf.getSize().width,
jtf.getLocationOnScreen().y+jtf.getSize().height);
st.setVisible(true);
}
}
/**
* Berechnet die Werte fuer die Applikation
*/
public void werteBerechnen()
{
boolean fehler=false;
try
{
a=Double.parseDouble(jTFSeite.getText());
this.repaint();
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null,"Falscher Wert: "+jTFSeite.getText(), "Fehler", JOptionPane.ERROR_MESSAGE);
fehler=true;
}
if(fehler)jTFSeite.setText("0.0");
}
}