import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JTextField;
import java.awt.event.ActionEvent;class Cacul2 extends JFrame { private JFrame jFrame = null; // @jve:decl-index=0:visual-constraint="73,17" private JPanel jContentPane = null; private JPanel jPanel = null; private JButton jButton = null; private JButton jButton1 = null; private JButton jButton2 = null; private JButton jButton3 = null; private JButton jButton4 = null; private JButton jButton5 = null; private JTextField jTextField = null; private SetText st; boolean clickdot = false; /**
 * This method initializes jFrame
 * 
 * @return javax.swing.JFrame
 */
private JFrame getJFrame() {
if (jFrame == null) {
jFrame = new JFrame();
jFrame.setResizable(false);
jFrame.setSize(new Dimension(299, 196));
jFrame.setContentPane(getJContentPane());
jFrame.setVisible(true);
}
return jFrame;
} /**
 * This method initializes jContentPane
 * 
 * @return javax.swing.JPanel
 */
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJPanel(), null);
jContentPane.add(getJTextField(), null);
}
return jContentPane;
} /**
 * This method initializes jPanel
 * 
 * @return javax.swing.JPanel
 */
private JPanel getJPanel() {
if (jPanel == null) {
jPanel = new JPanel();
jPanel.setLayout(new GridLayout(3, 3, 2, 2));
jPanel.setBounds(new Rectangle(119, 43, 153, 110));
jPanel.add(getJButton(), null);
jPanel.add(getJButton1(), null);
jPanel.add(getJButton2(), null);
jPanel.add(getJButton3(), null);
jPanel.add(getJButton4(), null);
jPanel.add(getJButton5(), null);
}
return jPanel;
} /**
 * This method initializes jButton
 * 
 * @return javax.swing.JButton
 */
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton("3");
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("actionPerformed()"); // TODO
// Auto-generated
// Event stub
// actionPerformed() st.Show(jTextField, e, clickdot);
}
});
}
return jButton;
} /**
 * This method initializes jButton1
 * 
 * @return javax.swing.JButton
 */
private JButton getJButton1() {
if (jButton1 == null) {
jButton1 = new JButton("4");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("actionPerformed()"); // TODO
// Auto-generated
// Event stub
// actionPerformed() st.Show(jTextField, e, clickdot);
}
});
}
return jButton1;
} /**
 * This method initializes jButton2
 * 
 * @return javax.swing.JButton
 */
private JButton getJButton2() {
if (jButton2 == null) {
jButton2 = new JButton("5");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("actionPerformed()"); // TODO
// Auto-generated
// Event stub
// actionPerformed() st.Show(jTextField, e, clickdot);
}
});
}
return jButton2;
} /**
 * This method initializes jButton3
 * 
 * @return javax.swing.JButton
 */
private JButton getJButton3() {
if (jButton3 == null) {
jButton3 = new JButton("+");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("actionPerformed()"); // TODO
// Auto-generated
// Event stub
// actionPerformed()
}
});
}
return jButton3;
} /**
 * This method initializes jButton4
 * 
 * @return javax.swing.JButton
 */
private JButton getJButton4() {
if (jButton4 == null) {
jButton4 = new JButton(".");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("actionPerformed()"); // TODO
// Auto-generated
// Event stub
// actionPerformed() clickdot = true;
st.Show(jTextField, e, clickdot); System.out.println(e.getActionCommand() + "  " + "******");
}
});
}
return jButton4;
} /**
 * This method initializes jButton5
 * 
 * @return javax.swing.JButton
 */
private JButton getJButton5() {
if (jButton5 == null) {
jButton5 = new JButton("=");
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("actionPerformed()"); // TODO
// Auto-generated
// Event stub
// actionPerformed()
}
});
}
return jButton5;
} /**
 * This method initializes jTextField
 * 
 * @return javax.swing.JTextField
 */
private JTextField getJTextField() {
if (jTextField == null) {
jTextField = new JTextField();
jTextField.setBounds(new Rectangle(7, 4, 262, 23));
jTextField.setEditable(false);
// jTextField.setSelectedTextColor(Color.cyan);
jTextField.setBackground(Color.white); // **************后景色***************
}
return jTextField;
} Cacul2() {
this.getJFrame();
st = new SetText();
}}// **********************************************
public class Calculator2 {
public static void main(String[] args) {
Cacul2 c2 = new Cacul2();
}
}// **********************************************class SetText {
protected void Show(JTextField jTextField, ActionEvent e, boolean clickdot) {
jTextField.setHorizontalAlignment(JTextField.RIGHT); if (!(e.getActionCommand().equals(".")))
jTextField.setText(jTextField.getText() + e.getActionCommand());
else{
System.out.println(jTextField.getText());           *******************************   1 new DecimalFraction().dot(clickdot, jTextField);
}
}
}// 输入小数
class DecimalFraction {
protected void dot(boolean clickdot, JTextField jTextField) {
boolean isdot = false;
if (clickdot) {
for (int i = 0; i < jTextField.getText().length(); i++)
if ('.' == jTextField.getText().charAt(i)) {
isdot = true;
break;
}
if (!isdot)
jTextField.setText(jTextField.getText() + ".");
}
}
}  这是我做的一个计算器的简单模拟,但在显示小数时出现了一个问题,我怎么也解决不了,望各位高手指点:  事情是这样的,在运行此程序时,你(首先)点小数点,我没调用setText()但TextFiled中却显示了一个小数点,
但在class SetText 中     *******************************   1  处执行System.out.println(jTextField.getText());           *******************************   1什么也没打印出来.
  没调用setText()但TextFiled中却显示了一个小数点,为什么会出现这种情况?

解决方案 »

  1.   

    改了这一小部分,别的楼主你自己想把class DecimalFraction {
    protected void dot(boolean clickdot, JTextField jTextField) {
    boolean isdot = false;
    if (clickdot) {
    for (int i = 0; i < jTextField.getText().length(); i++)
    if ('.' == jTextField.getText().charAt(i)) {
    isdot = true;
    break;
    }
    if ('.' != jTextField.getText().charAt(1)&&!isdot)
    jTextField.setText(jTextField.getText() + ".");
    }
    }
    }