001    /*
002     * @(#)MohrPrincipalStrs.java
003     */
004    
005    import java.awt.GridLayout;
006    import java.awt.Dimension;
007    import java.text.*;
008    import java.awt.Font;
009    import java.awt.event.*;
010    import javax.swing.JPanel;
011    import javax.swing.ImageIcon;
012    import javax.swing.JLabel;
013    import javax.swing.JTextField;
014    
015    /**
016     * MohrPrincipalStrs.java - Define o painel com os objetos 
017     * texto com os valores das componentes de tensões principais.
018     *
019     * <p>
020     * Descrição:
021     * <p>
022     * ===============================================================
023     * <p>
024     * Este arquivo contém a implementação do objetos JTextField para
025     * visualização dos valores das componentes de tensões principais,
026     * direção do plano da tensão principal máxima e valor da tensão
027     * de cisalhamento máxima.
028     *
029     * <p>
030     * ===============================================================
031     *
032     * @version    1.0 05/09/2004
033     * @author     Luiz Fernando Martha
034     * @author     Alonso Juvinao Carbono
035     * @author     Anderson Resende Pereira
036     * @author     Fernando Busato Ramires
037     * @author     Paôla Reginal Dalcanal
038     * @author     Ricardo Rodrigues de Araujo  
039     *
040     */
041    class MohrPrincipalStrs extends JPanel
042    {
043     /** Driver do programa Mohr-Circle */
044     protected MohrDriver driver;
045    
046     protected ImageIcon i_sig1;
047     protected ImageIcon i_sig2;
048     protected ImageIcon i_thetap;
049     protected ImageIcon i_taumax;
050    
051     protected JTextField f_sig1;
052     protected JTextField f_sig2;
053     protected JTextField f_thetap;
054     protected JTextField f_taumax;
055    
056     protected DecimalFormat frm_str;
057     protected DecimalFormat frm_ang;
058    
059    
060     MohrPrincipalStrs( MohrDriver driver )
061     {
062      this.driver = driver;
063    
064      Dimension d_label = new Dimension( 30, 20 );
065      frm_str = new DecimalFormat( "####0.00" );
066      frm_ang = new DecimalFormat( "###0.0" );
067      Font fnt = new Font( "Times New Roman", Font.BOLD | Font.ITALIC, 14 );
068    
069      f_sig1 = new JTextField( 5 );
070      f_sig1.setEnabled( false );
071      f_sig1.setHorizontalAlignment( JTextField.RIGHT );
072      f_sig1.setToolTipText( "Tensão principal máxima" );
073      JPanel p_sig1 = new JPanel();
074      i_sig1 = new ImageIcon( getClass().getResource("images/label_sig1.gif") );
075      JLabel l_sig1 = new JLabel( i_sig1 );
076      l_sig1.setFont( fnt );
077      l_sig1.setPreferredSize( d_label );
078      l_sig1.setHorizontalAlignment( JLabel.RIGHT );
079      l_sig1.setLabelFor( f_sig1 );
080      p_sig1.add( l_sig1 );
081      p_sig1.add( f_sig1 );
082    
083      f_sig2 = new JTextField( 5 );
084      f_sig2.setEnabled( false );
085      f_sig2.setHorizontalAlignment( JTextField.RIGHT );
086      f_sig2.setToolTipText( "Tensão principal mínima" );
087      JPanel p_sig2 = new JPanel();
088      i_sig2 = new ImageIcon( getClass().getResource("images/label_sig2.gif") );
089      JLabel l_sig2 = new JLabel( i_sig2 );
090      l_sig2.setFont( fnt );
091      l_sig2.setPreferredSize( d_label );
092      l_sig2.setHorizontalAlignment( JLabel.RIGHT );
093      l_sig2.setLabelFor( f_sig2 );
094      p_sig2.add( l_sig2 );
095      p_sig2.add( f_sig2 );
096    
097      f_thetap = new JTextField( 5 );
098      f_thetap.setEnabled( false );
099      f_thetap.setHorizontalAlignment( JTextField.RIGHT );
100      f_thetap.setToolTipText( "Ângulo do plano de tensão principal" );
101      JPanel p_thetap = new JPanel();
102      i_thetap = new ImageIcon( getClass().getResource("images/label_thetap.gif") );
103      JLabel l_thetap = new JLabel( i_thetap );
104      l_thetap.setFont( fnt );
105      l_thetap.setHorizontalAlignment( JLabel.RIGHT );
106      l_thetap.setPreferredSize( d_label );
107      l_thetap.setLabelFor( f_thetap );
108      p_thetap.add( l_thetap );
109      p_thetap.add( f_thetap );
110    
111      f_taumax = new JTextField( 5 );
112      f_taumax.setEnabled( false );
113      f_taumax.setHorizontalAlignment( JTextField.RIGHT );
114      f_taumax.setToolTipText( "Tensão de cisalhamento máxima" );
115      JPanel p_taumax = new JPanel();
116      i_taumax = new ImageIcon( getClass().getResource("images/label_taumax.gif") );
117      JLabel l_taumax = new JLabel( i_taumax );
118      l_taumax.setFont( fnt );
119      l_taumax.setPreferredSize( d_label );
120      l_taumax.setHorizontalAlignment( JLabel.RIGHT );
121      l_taumax.setLabelFor( f_taumax );
122      p_taumax.add( l_taumax );
123      p_taumax.add( f_taumax );
124    
125      setLayout( new GridLayout( 0, 2 ) );
126      add( p_sig1 );
127      add( p_sig2 );
128      add( p_thetap );
129      add( p_taumax );
130    
131      update( );
132     }
133    
134     public void setPortuguese( )
135     {
136      f_sig1.setToolTipText( "Tensão principal máxima" );
137      f_sig2.setToolTipText( "Tensão principal mínima" );
138      f_thetap.setToolTipText( "Ângulo do plano de tensão principal" );
139      f_taumax.setToolTipText( "Tensão de cisalhamento máxima" );
140     }
141    
142     public void setEnglish( )
143     {
144      f_sig1.setToolTipText( "Maximum principal stress" );
145      f_sig2.setToolTipText( "Minimum principal stress" );
146      f_thetap.setToolTipText( "Angle of principal stress plane" );
147      f_taumax.setToolTipText( "Maximum shear stress" );
148     }
149    
150     protected void updateSigma1( )
151     {
152      double sig1 = driver.getSolver().Sigma1( );
153      f_sig1.setText( frm_str.format( sig1 ) );
154     }
155    
156     protected void updateSigma2( )
157     {
158      double sig2 = driver.getSolver().Sigma2( );
159      f_sig2.setText( frm_str.format( sig2 ) );
160     }
161    
162     protected void updateThetaP( )
163     {
164      double thetap = driver.getSolver().ThetaP( );
165      f_thetap.setText( frm_ang.format( Math.toDegrees( thetap ) ) + "°" );
166     }
167    
168     protected void updateTauMax( )
169     {
170      double taumax = driver.getSolver().TauMax( );
171      f_taumax.setText( frm_str.format( taumax ) );
172     }
173    
174     void update( )
175     {
176      updateSigma1( );
177      updateSigma2( );
178      updateThetaP( );
179      updateTauMax( );
180     }
181    }
182