2015-05-22 20 views

回答

1

一個JFormattedTextField的語義是有點怪異,但他們可能會爲你工作。訣竅是將格式化文本字段的值設置爲可用作格式化程序的對象。漂浮工作得很好。

JFormattedTextField jff = new JFormattedTextField(0.0f); 

雖然JFormattedTextFields不會阻止用戶輸入錯誤的輸入。如果用戶輸入錯誤的數據,它們會恢復到舊的(正確的)值。如果你想要不同的行爲,你可能需要做關鍵的事情,有時這是唯一的方法。

public class Validation 
{ 

    public static void main(String[] args) 
    { 
     SwingUtilities.invokeLater(new Runnable() 
     { 
     public void run() 
     { 
      JFrame frame = new JFrame(); 

      Box vbox = Box.createVerticalBox(); 

      JFormattedTextField jff = new JFormattedTextField(0.0f); 
      vbox.add(jff); 
      JTextField jt = new JTextField(20); 
      vbox.add(jt); 
      JLabel value = new JLabel(jff.getValue().toString()); 
      vbox.add(value); 
      frame.add(vbox); 
      JButton b = new JButton("Get Value"); 
      b.addActionListener(new ActionListener() 
      { 

       @Override 
       public void actionPerformed(ActionEvent e) 
       { 
        value.setText(jff.getValue().toString()); 
       } 
      }); 
      JPanel p = new JPanel(); 
      p.add(b); 
      frame.add(p, BorderLayout.SOUTH); 

      frame.pack(); 
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      frame.setLocationRelativeTo(null); 
      frame.setVisible(true); 
     } 
     }); 
    } 
}