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