import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
class DoubleDocument extends PlainDocument{
private boolean bDot = false;
private JTextField jtTxt = null;
public DoubleDocument(JTextField txt){
this.jtTxt = txt;
}
public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException{
bDot = jtTxt.getText().toString().indexOf(".") == -1 ? false : true;
try{
if(s.indexOf(".") != -1 && s.length() > 1)
bDot = true;
System.out.println(">>>> 3 >> " + bDot);
if(!s.equals("."))
Double.parseDouble(s);
else if(bDot)
throw new Exception();
else
bDot = true;
}
catch(Exception ex){
Toolkit.getDefaultToolkit().beep();
return ;
}
super.insertString(offset,s, attributeSet);
}
}
public class PythagorasGUI{
JPanel panel1 = new JPanel(new BorderLayout());
public PythagorasGUI(){
JFrame f = new JFrame("Pythagoras");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(500,300);
Container cp = f.getContentPane();
JPanel p1 = new JPanel(new GridLayout(0,3));
JPanel p2 = new JPanel(new GridLayout(2,8));
JLabel l1 = new JLabel("a:");
l1.setHorizontalAlignment(SwingConstants.CENTER);
JLabel l2 = new JLabel("b:");
l2.setHorizontalAlignment(SwingConstants.CENTER);
JLabel l3 = new JLabel("c:");
l3.setHorizontalAlignment(SwingConstants.CENTER);
JLabel l4 = new JLabel("p:");
l4.setHorizontalAlignment(SwingConstants.CENTER);
JLabel l5 = new JLabel("q:");
l5.setHorizontalAlignment(SwingConstants.CENTER);
JLabel l6 = new JLabel("h:");
l6.setHorizontalAlignment(SwingConstants.CENTER);
JLabel l7 = new JLabel("A:");
l7.setHorizontalAlignment(SwingConstants.CENTER);
JLabel l8 = new JLabel("U:");
l8.setHorizontalAlignment(SwingConstants.CENTER);
JTextField f1 = new JTextField(new DoubleDocument(f1));
JTextField f2 = new JTextField(new DoubleDocument(f2));
JTextField f3 = new JTextField(new DoubleDocument(f3));
JTextField f4 = new JTextField(new DoubleDocument(f4));
JTextField f5 = new JTextField(new DoubleDocument(f5));
JTextField f6 = new JTextField(new DoubleDocument(f6));
JTextField f7 = new JTextField(new DoubleDocument(f7));
JTextField f8 = new JTextField(new DoubleDocument(f8));
p2.add(l1); p2.add(f1);
p2.add(l2); p2.add(f2);
p2.add(l3); p2.add(f3);
p2.add(l4); p2.add(f4);
p2.add(l5); p2.add(f5);
p2.add(l6); p2.add(f6);
p2.add(l7); p2.add(f7);
p2.add(l8); p2.add(f8);
panel1.add(p2, BorderLayout.NORTH);
cp.add(panel1);
f.setVisible(true);
}
public static void main(String[] args){
new PythagorasGUI();
}
}